Вопросительный знак (?), плюс (+) и звездочка (*)

Вопросительный знак (?)

Вопросительный знак (?) в регулярных выражениях означает, что предшествующий ему символ может присутствовать или отсутствовать в строке.

Например, регулярному выражению 10? соответствуют в том числе следующие строки:

  • 1
  • 10
Пример

Допустим, нам нужно, чтобы регулярное выражение соответствовало всем IP-адресам, у которых последняя часть содержит одну или две цифры.

Так, регулярному выражению 216\.239\.32\.\d\d? соответствуют в том числе следующие строки:

  • 216.239.32.2
  • 216.239.32.34

В этом примере используется обратная косая черта, чтобы точка не интерпретировалась как специальный символ, а сочетание символов \d означает "любая цифра".

Плюс (+)

Плюс (+) в регулярных выражениях означает, что предшествующий символ должен присутствовать и может повторяться несколько раз подряд.

Например, регулярному выражению 10+ соответствуют в том числе следующие строки:

  • 10
  • 100
  • 1000
  • ...и т. д.
Пример

Допустим, нам нужно, чтобы регулярное выражение соответствовало всем IP-адресам, у которых последняя часть содержит одну или несколько цифр.

Так, регулярному выражению 216\.239\.32\.\d+ соответствуют в том числе следующие строки:

  • 216.239.32.2
  • 216.239.32.34
  • 216.239.32.567

В этом примере используется обратная косая черта, чтобы точка не интерпретировалась как специальный символ, а сочетание символов \d означает "любая цифра".

Звездочка (*)

Звездочка (*) в регулярных выражениях означает, что предшествующий символ может присутствовать, отсутствовать или повторяться несколько раз подряд.

Например, регулярному выражению 10* соответствуют в том числе следующие строки:

  • 1
  • 10
  • 100
  • 1000
  • ...и т. д.
Пример

Допустим, нам нужно, чтобы регулярное выражение соответствовало всем IP-адресам, у которых последняя часть содержит одну или несколько цифр.

Так, регулярному выражению 216\.239\.32\.\d* соответствуют в том числе следующие строки:

  • 216.239.32.2
  • 216.239.32.34
  • 216.239.32.567

В этом примере используется обратная косая черта, чтобы точка не интерпретировалась как специальный символ, а сочетание символов \d означает "любая цифра".

Если в регулярном выражении звездочка следует за точкой (.*), то ему будут соответствовать все строки, где на месте этого сочетания знаков находится абсолютно любая последовательность символов (или вообще ничего). Точка означает "любой символ", а следующая за ней звездочка означает "может повторяться сколько угодно раз или вообще отсутствовать". Так можно создать регулярное выражение, которому будут соответствовать все URI с определенным началом и окончанием, и любой серединой. Например, регулярному выражению /mens/.*html соответствуют в том числе следующие строки:

  • /mens/shirts/oxford.html
  • /mens/shirts/oxford/shortsleeve.html
Была ли эта статья полезна?
Как можно улучшить эту статью?