<Предыдущая | Содержание: | Следующая>
* - Соответствие элементу ноль или более раз
Как и ? метасимвол, * используется для обозначения необязательного элемента; однако, в отличие от ?, элемент может встречаться сколько угодно раз, а не один раз. Допустим, мы хотели узнать, является ли строка предложением; то есть он начинается с прописной буквы, затем содержит любое количество прописных и строчных букв и пробелов и заканчивается точкой. Чтобы соответствовать этому (очень грубому) определению предложения, мы могли бы использовать такое регулярное выражение:
[[: верхний:]] [[: верхний:] [: нижний:]] * \.
Выражение состоит из трех элементов: выражение в скобках, содержащее [: верхний:] класс символов, выражение в скобках, содержащее как [: верхний:] и [:ниже:] классы символов и пробел, а точка экранирована обратной косой чертой. Второй элемент заканчивается * метасимвол, так что после ведущей прописной буквы в нашем предложении любое количество прописных и строчных букв и пробелов может следовать за ним и при этом совпадать:
[я @ linuxbox ~] $ echo "Это работает." | grep -E '[[: upper:]] [[: upper:] [
:ниже:] ]*\.'
Это работает.
[я @ linuxbox ~] $ echo "Это работает". | grep -E '[[: upper:]] [[: upper:] [
:ниже:] ]*\.'
Это работает.
[я @ linuxbox ~] $ эхо «это не так» | grep -E '[[: upper:]] [[: upper:
][:ниже:] ]*\.'
[я @ linuxbox ~] $
[я @ linuxbox ~] $ echo "Это работает." | grep -E '[[: upper:]] [[: upper:] [
:ниже:] ]*\.'
Это работает.
[я @ linuxbox ~] $ echo "Это работает". | grep -E '[[: upper:]] [[: upper:] [
:ниже:] ]*\.'
Это работает.
[я @ linuxbox ~] $ эхо «это не так» | grep -E '[[: upper:]] [[: upper:
][:ниже:] ]*\.'
[я @ linuxbox ~] $
Выражение соответствует первым двум тестам, но не третьему, поскольку в нем отсутствуют требуемый начальный символ верхнего регистра и конечная точка.