Понимание регулярных выражений группы без захвата - PullRequest
0 голосов
/ 04 апреля 2019

Я немного сбит с толку, понимая шаблон регулярного выражения ниже из этой ссылки :

(?:x)

Соответствует 'x', но не запоминает совпадение.Скобки называются не захватывающими скобками и позволяют вам определять подвыражения для операторов регулярных выражений, с которыми нужно работать.Рассмотрим пример выражения /(?:foo){1,2}/.Если бы выражение было /foo{1,2}/, символы {1,2} будут применяться только к последнему 'o' в 'foo'.С круглыми скобками без записи {1,2} применяется ко всему слову «foo».Для получения дополнительной информации см. Использование скобок ниже.

Я не могу понять эти две точки:

  1. Рассмотрим пример выражения /(?:foo){1,2}/.Если бы выражение было /foo{1,2}/, символы {1,2} будут применяться только к последнему 'o' в 'foo'.

  2. С круглыми скобками без записи {1,2} применяется ко всему слову 'foo'

1 Ответ

1 голос
/ 04 апреля 2019

На самом деле, насколько я знаю, группа, не занимающаяся захватом, не имеет ничего общего с вашим непосредственным вопросом, и оба следующих шаблона будут соответствовать одним и тем же вещам:

/(?:foo){1,2}/
/(foo){1,2}/

Скобки сообщают механизму регулярных выражений, что вы хотите, чтобы правило количества {1,2} применялось ко всему количеству. Без скобок количество по умолчанию применяется к непосредственно предшествующему символу o:

/foo{1,2}/

Это будет соответствовать foo и fooo.

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