LINUX.ORG.RU

регулярные выражения, число вхождений

 


0

1

Здравствуйте

echo "teest" | sed -rn '/te{2}st/p'
вывод teest
echo "teeest" | sed -rn '/te{2}st/p'
вывод пусто Но
echo "aaaaa" | sed -rn '/a{2}/p' 
вывод ааааа ?
подскажите пожалуйста



Последнее исправление: tema696 (всего исправлений: 2)

Ответ на: комментарий от ashot

в последнем примере указано a{2} как я понимаю, это конкретно вхождение два раз. а результат все равно ааааа 5 раз

tema696
() автор топика
Ответ на: комментарий от ashot

Да, но {2} указывает на 2 раза повторяющийся символ, а не больше двух Во втором примере видно что teeest при te{2}st не отображается. Почему a{2} отображает ааааа

tema696
() автор топика
Ответ на: комментарий от tema696

{2} указывает на 2 раза повторяющийся символ, а не больше двух

Указывает, что a{2} содержится хотя бы 1 раз

Во втором примере видно что teeest при te{2}st не отображается.

Потому, что проверяется teest, а не ee.

ashot ★★★★
()
Ответ на: комментарий от ashot

Ашот, извени пожалуйста, но я ни фига не понял(((
Не вижу разницы между teeest и аааааа
Вики

{n} Ровно n раз | colou{3}r | colouuur
{m,n} От m до n включительно | colou{2,4}r | colouur, colouuur, colouuuur
{m,} Не менее m | colou{2,}r | colouur, colouuur, colouuuur и т. д.
{,n} Не более n | colou{,3}r | color, colour, colouur, colouuur

tema696
() автор топика
Ответ на: комментарий от ashot

Не могли бы вы объяснить более подробно?

tema696
() автор топика
Ответ на: комментарий от tema696

Не вижу разницы между teeest и аааааа

sed -n '/regexp/p' - печать строки, содержащей regexp
Что именно не понятно? Ищется строка (строка целиком!), которая содержит regexp (регулярное выражение) и выводится на печать (найденная строка).
Строка teeest не содержит teest, а потому не находится и не печатается. А строка аааааа содержит aa (и не важно сколько раз) поэтому находится и печатается (вся найденная строка!).

ashot ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.