如何将 Perl 单行正则表达式替换为 Python 单行正则表达式?

sim*_*eco 6 python regex command-line-interface

我从事的项目没有使用Perl,我想保持一致性。这就是为什么我想知道是否可以轻松地将这个方便的Perl 单行代码替换为Python 单行代码

perl -pe 's/pattern/replacement/g' <<< 'expression'
Run Code Online (Sandbox Code Playgroud)

该程序一次从 STDIN 读取一行,pattern用字符串替换正则表达式的所有匹配项replacement,并将(可能)修改的行输出到 STDOUT。

hee*_*ayl 6

您可以re.sub使用-c命令行选项运行,但它不会像以下那样漂亮perl

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

如果您还想从 STDIN 获取输入,则需要sys.stdin并且这也意味着import-ing sys

python -c 'import re,sys;print(re.sub(r"<pattern>", "<replacement>", sys.stdin.read()))' <<< '<string>'
Run Code Online (Sandbox Code Playgroud)

因此,例如:

% 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
Run Code Online (Sandbox Code Playgroud)