регулярное выражение, чтобы соответствовать пробелу и одному - PullRequest
1 голос
/ 29 мая 2019

Я новичок в написании регулярных выражений, я хочу написать регулярное выражение, которое может соответствовать следующим строкам

 0 x0_0                            1                 -228900  Result - true
 0 x2_0                            0                 -228900  Result - false
 0 x3_0                            0                 -128900  Result - false

На самом деле я хочу, чтобы регулярное выражение возвращало true, если оно имеет

x<AnyDigit>_<AnyDigit> <WhiteSpace>  1

Я написал ниже выражение

x(\d+)_(\d+)[\s1]

но оно возвращает true и в нижнем случае

0 x3_0                           0                 -128900

Ответы [ 2 ]

2 голосов
/ 29 мая 2019

В вашем шаблоне вы используете класс символов [\s1], который будет соответствовать либо символу пробела (который также будет соответствовать символу новой строки), либо 1.

Если вы хотите только совпадение, вы можете пропустить группы захвата. Обратите внимание, что \d+ соответствует 1+ цифрам.

Вы можете обновить свой шаблон до:

\bx\d+_\d+[ \t]+1\b

Объяснение

  • \bx\d+ Соответствует границе слова, чтобы x не являлся частью большего слова, а затем 1+ цифр
  • _\d+ Соответствие подчеркиванию с последующими 1+ цифрами
  • [ \t]+ Совпадение 1+ раз пробел или табуляция
  • 1\b Совпадение 1 последователя по границе слова

Regex demo

1 голос
/ 29 мая 2019

[\s1] - это класс символов, который соответствует одному символу в виде пробела или цифры 1.

В строке

0 x3_0                           0                 -128900

у нас есть x(\d+)_(\d+)[\s1] (в конце регулярного выражения) совпадение x3_0:

  • x соответствует самому себе.
  • первая \d+ группа соответствует 3
  • _ соответствует
  • вторая \d+ группа соответствует 0
  • [\s1] соответствует пробелу после 0

Буквальное выражение регулярного выраженияваши требования:

x\d_\d\s+1

, что соответствует x, за которым следует цифра, затем _, затем цифра, затем один или несколько пробельных символов, за которыми следует 1.

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