Ищем символ ИЛИ последовательность в регулярном выражении - PullRequest
1 голос
/ 19 марта 2019

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

/[abc( {2,})]/

Но, похоже, он также обнаруживает единое пространство. Что я делаю неправильно?

1 Ответ

3 голосов
/ 19 марта 2019

Шаблон [abc( {2,})] - это класс символов (или выражение в скобках в другой терминологии), который соответствует одному символу, a, b, c, (, пробел, {, 2, ,, } или ).Вы не можете определять последовательности символов внутри классов символов.

Вы можете использовать

[abc]| {2,}

Или, чтобы сопоставить любые 2 или более пробелов, используйте

[abc]|\s{2,}

Оператор чередования | используется здесь для разделения двух альтернатив:

  • [abc] - класс символов (выражение в скобках), который соответствует одному символу, либоa, b или c
  • | - или
  • {2,} - два или более пробелов.

ПРИМЕЧАНИЕ: Всякий раз, когда вы хотите использовать это чередование внутри более длинного паттерна, рекомендуется заключить его в группу , чтобы он не "искажал" общее регулярное выражение:

([abc]| {2,})

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

(?:[abc]| {2,})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...