Как я могу заменить совпадения регулярных выражений и отобразить замены в Perl?
-
05-07-2019 - |
Вопрос
То есть:
echo H#97llo | MagicPerlCommand
Стандартный вывод:
Hallo
были ли MagicPerlCommand чем-то вроде
perl -pnle "s/#(\d+)/chr(\1)/ge"
(но это не работает).
Решение
Изменять \1
к $1
в вашей MagicPerlCommand.А \digit
Стиль обратной ссылки не работает, когда вычисляется выражение замены (т.е. s///e
).
У меня это сработало в Windows и Linux.
Другие советы
В соответствии с j_random_hacker
ответ, вы должны использовать $1
скорее, чем \1
.
Это связано с тем, что использование '/e
Модификатор регулярного выражения означает, что правая половина — это просто еще одно обычное выражение Perl, а не подстановка регулярного выражения.Поскольку это Perl, вам придется использовать синтаксис Perl для ссылки на скобки, а не обычный синтаксис регулярных выражений.
Не связан с StackOverflow