как сопоставить следующий шаблон в регулярных выражениях? - PullRequest
0 голосов
/ 11 апреля 2020

Как мне сопоставить шаблон any number followed by h or t or l как 1h , 126h or 1268h, но не 1.1h 12.6h or 12.68h в данном абзаце.

Я пишу приложение, которое может заменить 1h на 100 или * От 1008 * до 126800, чтобы вместо ввода 00 человек мог просто поставить h с номером, но из-за какой-то ошибки он также соответствует десятичным числам.

Шаблон, который я написал, - (\d+)(h|t|l)

1 Ответ

2 голосов
/ 11 апреля 2020

Вы можете использовать границу пропуска слева (?<!\S), если поддерживается положительный вид сзади или якоря для соответствия всей строке.

Чередование можно записать как класс символов [htl]

(?<!\S)(\d+)([htl])
  • (?<!\S) Положительный взгляд за спиной, утверждение, что слева, не является символом без пробелов
  • (\d+) Группа захвата 1, соответствует 1+ цифрам
  • ([htl]) Группа захвата 2, соответствует либо h t or l`

Regex demo

Использование якорей для соответствия всей линии

^(\d+)([htl])$

Regex demo

Без обходного пути вы можете сопоставить либо символ пробела, либо начало строки (?:\s|^), например:

(?:\s|^)(\d+)([htl])

Regex demo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...