Как заменить Perl однострочное регулярное выражение на Python однострочное? - PullRequest
2 голосов
/ 29 октября 2019

Я работаю над проектом, в котором Perl не используется, и я хотел бы поддерживать согласованность. Вот почему мне интересно, смогу ли я легко заменить этот удобный Perl однострочный на Python однострочный :

perl -pe 's/pattern/replacement/g' <<< 'expression'

Эта программа читает из STDIN aстрока, заменяет все совпадения регулярного выражения pattern на строку replacement и выводит (возможно) измененную строку в STDOUT.

1 Ответ

3 голосов
/ 29 октября 2019

Вы можете запустить re.sub с параметром командной строки -c, но он не будет таким же красивым, как perl:

python -c 'import re;print(re.sub(r"<pattern>", "<replacement>", "<string>"))'

Если вы хотите получить ввод из STDINвам также нужно sys.stdin, что также означает import -ing sys:

python -c 'import re,sys;print(r"<pattern>", "<replacement>", sys.stdin.read()))' <<< '<string>'

Так, например:

% python -c 'import re;print(re.sub(r"foo", "bar", "foobar"))'
barbar

% python -c 'import re,sys;print(re.sub(r"foo", "bar", sys.stdin.read()))' <<< 'foobar'
barbar
...