Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Конечно, это достаточное время для геолога, но в эпоху интернета, 7 лет — это просто мгновение ока.
(a*)\1 для нахождения вхождения чётного количества a в строке), также невозможно). Только регулярные выражения в большинстве движков уже давно не регулярные.(zyx-desktop:zyx:~) 3 % echo 'abbabaa' | perl -p -i -e 's/(a(?2)*)(b(?1)*)/1($1)2($2)/'
1(abba)2(baa)PCRE тоже поддерживает, но из‐за отсутствия pcresed я не могу показать, какой кусок текста сопоставляется какой скобке.(zyx-desktop:zyx:~) 3 % echo 'abbabaa' | perl -p -i -e 's/(?<fst>a(?&snd)*)(?<snd>b(?&fst)*)/1($1)2($2)/'
1(abba)2(baa)и нумеровать относительно текущей скобки:(zyx-desktop:zyx:~) 3 % echo 'abbabaa' | perl -p -i -e 's/(a(?+1)*)(b(?-2)*)/1($1)2($2)/'
1(abba)2(baa). -2 потому, что считаются открывающие скобки, соответствующие захватывающим группам, в заданном направлении.echo '((((()))))' | grep --color=always --perl-regexp '\((?R)?\)' подсветит вам все скобки (при условии, что grep собран с поддержкой PCRE). Можно ссылаться как на всё регулярное выражение (как в моём примере), так и на конкретную именованную или нумерованную группу.(?{code}) и (??{code})), но использование этой возможности не является хорошей идеей (в perldoc perlre в первом абзаце описания даже стоит предупреждение).А ещё я вот думаю, что код «ss=: +/ @: *:» выглядит довольно страшно. Авторы его наверняка вдохновлялися брэйнфаковскою записью кода.На самом деле, философский вопрос — что лучше: компактность или читаемость. По мне, лучше IDE с хорошим парсингом и хорошей подсветкой синтаксиса;-) (т.е. компактность и правильность в сочетании со средствами искусственного повышения способности читать;-) ) Не знаком глубоко с J и K, но, подозреваю, пропустить один оператор так, что компилятор не посчитает это ошибкой, и потом нудно отлавливать баг при отладке — в таких языках ситуация реальная. Если же язык стековый, где фактически вся программа — один сплошной оператор и скобок нет, то всё становится ещё веселее.
Десять причин не использовать статически типизированный функциональный язык программирования