На предыдущем уроке мы научились указывать точное количество повторений необходимых нам символов, но в регулярных выражениях также есть возможность указания произвольного количества повторений символов. Например, представьте, что вы подключили на свой сайт форму с полем для пожертвований, которая принимает числовое значение в долларах. Богатый пользователь может зайти и пожертвовать 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}, где мы указываем точное количество повторений необходимых нам символов. |