LINUX.ORG.RU

regexp задачка


0

0

Есть такая задача, надо составить такой регексп чтобы он соответсвовал любым повторяющимся символам, i.e:

echo -e "aa\nb\nbb\nccc\ndfff\nertyua\n"|egrep "$regexp" выдавало aa nbb nccc ndfff

либо echo "adgjeerys"|perl -p -e 's/.*($regexp).*/$1/' выдавало ee

Это вообще возможно ?

anonymous

Для perl-а возможно
@res = $str =~ /((.)\2+)/g
в нечетных элементах @res будут подстроки повторяющихся символов

anonymous
()
Ответ на: комментарий от sdio

$ echo -e "ba\naa"|egrep ".{2,}" ba aa --- ответ не верный

anonymous
()

aa\nb\nbb\nccc\ndfff\nertyua\n регексп не выдаст \тbb, ибо это не повторяющийся символ.

регексп в случае повторяющихся символов выдаст

aa bb ccc ffff

и делается это вот так

#!/usr/bin/perl

$_="aa\nb\nbb\nccc\ndfff\nertyua\n";

print " $& " while m!(.)\1+!isg; print "\n";

vilfred ☆☆
()
Ответ на: комментарий от anonymous

> подстроки повторяющихся символов

пусть уж чел определится с тем, что ему нужно, подстроки повторяющихся символов, или сами повторячющиеся символы. ибо из его примера исходного

> echo -e "aa\nb\nbb\nccc\ndfff\nertyua\n"|egrep "$regexp" выдавало aa nbb nccc ndfff

не следует, что "\nbb" является подстрокой повторяющихся символов, ибо в строке которую жрет echo дважды подстрока "\nbb" не встречается. но дважды встречается подстрока "\nb", чего, однако, не написано в том, что должно выдаваться регекспом (у него написано что регесп должен выдавать результат в виде "aa nbb nccc ndfff" )

vilfred ☆☆
()
Ответ на: комментарий от vilfred

Да все просто, хочу регексп чтобы соответсвовал повторяющимся символам,

скажем

$regexp='искомый регексп';

$string="aaaf\ndff\nbbb\nrrr\nf\n";

$string=~s/$regexp//

print "$string ---\n";

выдавало что-то типа

af

ndf

nb

nr

nf

---

и другие применения соответсвия подстроки.

ищу именно выражение regexp и интересуюсь возможно ли это, сам много думал на эту тему и ни чего не придумал.

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