На предыдущем уроке мы научились указывать точное количество повторений необходимых нам символов, но в регулярных выражениях также есть возможность указания произвольного количества повторений символов. Например, представьте, что вы подключили к себе на сайт форму с полем для пожертвований, которая принимает числовое значение в долларах. Богатый пользователь может зайти и пожертвовать 1000 долларов, в то время как обычный пользователь может зайти и пожертвовать всего лишь 5 долларов.
Одним из способов выражения такого шаблона является использование так называемой концепции «Kleene Star» или «Kleene Plus», которая представляет соответствие определенному символу (или группе) 0 или больше раз, либо 1 или больше раз. Например, чтобы соответствовать пожертвованиям, рассмотренным выше, мы можем использовать шаблон \d*
для сопоставления любому количеству цифр, но более логичной версией будет \d+
, которая гарантирует, что входная строка будет иметь по крайней мере одну цифру.
Эти два метасимвола могут использоваться с любыми символами или другими метасимволами, например:
a+
— одно или больше повторений символа a
;
[abc]+
— одно или больше повторений символов a
, b
или c
;
.*
— ноль или больше повторений вообще любых символов.
В следующем задании для соответствия необходимых строк используйте метасимволы *
и +
.
Задание | Текст | |
Соответствовать | aaaabcc | ![]() |
Соответствовать | aabbbbc | ![]() |
Соответствовать | aacc | ![]() |
Пропустить | a | ![]() |
Решение | В каждой строке есть как минимум два а , ноль или больше b и как минимум одно с , поэтому мы можем использовать выражение aa+b*c+.
В качестве альтернативы, более ограничительным выражением будет a{2,4}b{0,4}c{1,2}, где мы указываем точное количество повторений необходимых нам символов. |