.
средства соответствуют любому символу в регулярных выражениях. *
нуль средств или больше случаев ЕДИНСТВЕННОГО regex предшествование ему. Мой alphabet.txt
содержит строку
abcdefghijklmnopqrstuvwxyz
Не делает grep a.*z alphabet.txt
имейте в виду соответствие любые подстроки, которые запускаются с a
, с нулем или большим количеством случаев любого типа Отдельного символа, промежуточного их и конец с z
? Например, abz
, abbz
, ahhhhhz
, но нет abbdz
?
Я думал grep a.*z alphabet.txt
не поймал бы строку в моем файле алфавита.
*
средства, что сразу предыдущий шаблон повторяется, не, что подобранный текст повторяется. Например, [ab]*
средства (|[ab]|[ab][ab]|[ab][ab][ab]|…)
шаблон [ab]
повторяется нуль или больше раз. Это будет соответствовать "aba"
, потому что это правильно выполняет шаблон [ab][ab][ab]
.
С .*
, это становится (|.|..|...|....|…)
, таким образом, это соответствует любому количеству символов, и символы могут отличаться.
В abbdz
, просто потому что .
соответствовал b
сначала, не означает .
, будет только соответствовать b
для остальной части выражения.
Модификаторы повторения такой как *
действие на предыдущем regex атоме, не на повторения символа, подобранного предыдущий regex атом. Так, например:
$ printf 'az\nabz\nabbz\nabbbz\nabcz\n' | sed -n '/a.*z/p'
az
abz
abbz
abbbz
abcz
(все соответствие строк). Если Вы хотите только соответствовать повторениям , соответствовал символ, можно использовать обратную ссылку:
$ printf 'az\nabz\nabbz\nabbbz\nabcz\n' | sed -n '/a\(.\)\1*z/p'
abz
abbz
abbbz
grep a.*z
соответствия все между первым вхождением a и последним вхождением z, включая первый a и последний z. Эти .*
выражение с подстановочными знаками, которое соответствует любой последовательности символов включая пустую последовательность length=0. grep a.*z
соответствия все следующие строки, которые запускаются с a и заканчиваются z: "abcdefghijklmnopqrstuvwxyz", "abz", "abbz", "ahhhhhz" и "abbdz". Это также соответствует тексту, который охватывает несколько строк, например, этот текст:
abcdefghijklmnopqrstuvwxyz
abz
abbz
ahhhhhz
abbdz