Поиск нескольких символов с помощью регулярных выражений

Как правило, нужно найти в строке несколько символов, либо условно найти какое-либо соответствие в зависимости от наличия определенных символов.

Символ ? находит предшествующий символ ноль или один раз:

Регулярное выражение colou?r находит и color, и colour

В данном примере символ ? после u в регулярном выражении означает, что u должен либо отсутствовать, либо присутствовать лишь один раз перед другими символами.

Символ * находит предшествующий символ ноль или более раз:

tre* находит tree (два раза) и tre и tr

Он также находит tr в tr*ick или tr*eat.

Символ + находит предшествующий символ один или более раз:

tre+ находит tree (e находится два раза) и tre

Обратите внимание, что здесь не находится tr, поскольку после tr должна быть как минимум одна e (e должна присутствовать один или несколько раз в тексте).

Также можно использовать {фигурные скобки} для определения пороговых значений по числу повторов символа:

{N} находит предшествующий символ N раз:

  • 0{3} находит 000, не находит 00, и находит 0000 два раза (000*0 и 0*000).

{N, M} определяет нижний и верхний порог по тому, сколько раз символ должен появиться для того, чтобы соответствовать условию. Текст должен содержать символ как минимум N раз и максимум M раз:

  • a{1,2} находит a и aa, но находит aaa особым образом.

    В случае aaa регулярное выражение находит текст два раза (aa*a и a*aa).

  • a{2,2} находит aa один раз, aaa - два раза (aa*a и a*aa), но не находит aba или abb.

M в {N,M} - необязательное верхнее пороговое значение. Можно использовать и синтаксис {N,}, где M опущено. Такой синтаксис требует, чтобы символ встретился, как минимум, N раз, а затем (опционально) еще сколько-то раз:

a{2,} находит aa один раз, aaa один раз, aaaaaaaaa один раз, aa*b один раз, aaaa*b*aaaaa два раза и aa*ba один раз.

Синтаксис с указанием пороговых значений, так же как и выражения с символами ?+*, можно комбинировать с квадратными скобками:

[a-z]+ позволяет найти любой алфавитный символ нижнего регистра один или несколько раз

[a-z]{1,} эквивалентно [a-z]+

[a-z]{2,4} находит любую последовательность любых алфавитных символов нижнего регистра длиной от двух до четырех символов.