четкое значение.* в regex

. средства соответствуют любому символу в регулярных выражениях. * нуль средств или больше случаев ЕДИНСТВЕННОГО regex предшествование ему. Мой alphabet.txt содержит строку

abcdefghijklmnopqrstuvwxyz

Не делает grep a.*z alphabet.txt имейте в виду соответствие любые подстроки, которые запускаются с a, с нулем или большим количеством случаев любого типа Отдельного символа, промежуточного их и конец с z? Например, abz, abbz, ahhhhhz, но нет abbdz?

Я думал grep a.*z alphabet.txt не поймал бы строку в моем файле алфавита.

0
задан 26 January 2017 в 19:40

4 ответа

* средства, что сразу предыдущий шаблон повторяется, не, что подобранный текст повторяется. Например, [ab]* средства (|[ab]|[ab][ab]|[ab][ab][ab]|…) шаблон [ab] повторяется нуль или больше раз. Это будет соответствовать "aba", потому что это правильно выполняет шаблон [ab][ab][ab].

С .*, это становится (|.|..|...|....|…), таким образом, это соответствует любому количеству символов, и символы могут отличаться.

3
ответ дан 7 November 2019 в 02:32

В abbdz, просто потому что . соответствовал b сначала, не означает ., будет только соответствовать b для остальной части выражения.

0
ответ дан 7 November 2019 в 02:32

Модификаторы повторения такой как * действие на предыдущем 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
0
ответ дан 7 November 2019 в 02:32

grep a.*z соответствия все между первым вхождением a и последним вхождением z, включая первый a и последний z. Эти .* выражение с подстановочными знаками, которое соответствует любой последовательности символов включая пустую последовательность length=0. grep a.*z соответствия все следующие строки, которые запускаются с a и заканчиваются z: "abcdefghijklmnopqrstuvwxyz", "abz", "abbz", "ahhhhhz" и "abbdz". Это также соответствует тексту, который охватывает несколько строк, например, этот текст:

abcdefghijklmnopqrstuvwxyz
abz
abbz
ahhhhhz
abbdz
0
ответ дан 7 November 2019 в 02:32

Другие вопросы по тегам:

Похожие вопросы: