Лингвофорум

Общий раздел => Наука и техника => Компьютеры => Тема начата: myst от декабря 6, 2010, 12:59

Название: Замена регулярным выражениям
Отправлено: myst от декабря 6, 2010, 12:59
Сабж существует, или я напрасно обиваю Гугл?
Мне нужен язык шаблонов, на котором можно было бы выразить s1s2s1, где sn — произвольный символ.
Сегодня на кладбище эксгумировал труп Рефала, но чую, не умеет он уникод. :(
Название: Замена регулярным выражениям
Отправлено: RawonaM от декабря 6, 2010, 14:20
Цитата: myst от декабря  6, 2010, 12:59
Мне нужен язык шаблонов, на котором можно было бы выразить s1s2s1, где sn — произвольный символ.
В регехе тоже можно, чего ж нет.
Название: Замена регулярным выражениям
Отправлено: myst от декабря 6, 2010, 14:22
Цитата: RawonaM от декабря  6, 2010, 14:20
В регехе тоже можно, чего ж нет.
И как выглядит регексп всех трёхбуквенных сочетаний с одинаковыми первой и последней буквами, например? :eat:
Название: Замена регулярным выражениям
Отправлено: RawonaM от декабря 6, 2010, 14:27
Цитата: myst от декабря  6, 2010, 14:22
ЦитироватьВ регехе тоже можно, чего ж нет.
И как выглядит регексп всех трёхбуквенных сочетаний с одинаковыми первой и последней буквами, например? :eat:
(.).\1
Название: Замена регулярным выражениям
Отправлено: myst от декабря 6, 2010, 14:35

% echo ололо | sed -n '/(.).\1/p'
sed: -e expression #1, char 8: Invalid back reference

(http://kolobok.us/smiles/personal/beach.gif)
Название: Замена регулярным выражениям
Отправлено: Demetrius от декабря 6, 2010, 14:38
Цитировать$ echo ололо | sed -rn '/(.).\1/p'
ололо
$ echo ололо | sed -n '/\(.\).\1/p'
ололо
:eat:

Второе не POSIX.
Название: Замена регулярным выражениям
Отправлено: Demetrius от декабря 6, 2010, 14:41
Хотя замена регулярным выражениям не помешала бы... Уж больно они неудобочитаемые.
Название: Замена регулярным выражениям
Отправлено: myst от декабря 6, 2010, 14:46
:wall: Задолбали <пип> эти диалекты <пи-и-и...>!
А в gawk'е всё равно не работает. :(
Название: Замена регулярным выражениям
Отправлено: myst от декабря 6, 2010, 14:50
Больше всего бесит зоопарк регэкспов.
Название: Замена регулярным выражениям
Отправлено: Demetrius от декабря 6, 2010, 14:54
Походу awk не поддерживает ссылок назад. Хорошо, что я его не учил.  ;D

Цитата: http://www.eggheadcafe.com/software/aspnet/35699703/awk-regex-storing-a-match.aspx
AFAIK you cannot in awk. Backreferences are not supported. GNU awk supports
backreferences for substitutions using the gensub() function, but you cannot
pull them out like you do with perl, although you can put together hacks
like (not the same as your example)

$ echo ca12cat | gawk '{s=gensub(/(..)(..).*/,"\\2","g"); print s}'
12


but in any case using backreferences during the match itself is not
supported AFAICT.
Может, поможет?
Название: Замена регулярным выражениям
Отправлено: myst от декабря 6, 2010, 14:56
Цитата: Demetrius от декабря  6, 2010, 14:54
Походу awk не поддерживает ссылок назад. Хорошо, что я его не учил.
Но другого такого удобного фильтра нет. Пичаль. :'(
Название: Замена регулярным выражениям
Отправлено: myst от декабря 6, 2010, 14:57
Весь этот чёртов unix-way — куча грёбаных недоделанных полусовместимых костылей! >(
Название: Замена регулярным выражениям
Отправлено: Demetrius от декабря 6, 2010, 15:05
Дооооо, конечно, гораздо удобнее Windows-way: писать макросы на вижуалбейсике. Кстати, редактор макросов уникод поддерживает?
Название: Замена регулярным выражениям
Отправлено: myst от декабря 6, 2010, 15:36
А што такое Windows-way и при чём здесь Visual Basic? :???
Название: Замена регулярным выражениям
Отправлено: Demetrius от декабря 6, 2010, 15:59
Ну, как бы, если не нравится юникс-вей, Windows — это первое, что приходит в голову.
Название: Замена регулярным выражениям
Отправлено: myst от декабря 6, 2010, 16:01
И што же в нём за way? :)
А юникс-вей в нонешнем виде не может нравиться, у него то лапу ломит, то хвост отваливается. :(
Название: Замена регулярным выражениям
Отправлено: RawonaM от декабря 6, 2010, 16:34
Цитата: myst от декабря  6, 2010, 14:57
Весь этот чёртов unix-way — куча грёбаных недоделанных полусовместимых костылей! >(
Зато бесплатно. :yes:
Название: Замена регулярным выражениям
Отправлено: myst от декабря 6, 2010, 16:40
Цитата: RawonaM от декабря  6, 2010, 16:34
Зато бесплатно. :yes:
Намекаешь на существование платной замены? :)