繁体   English   中英

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

[英]How to replace Perl one-liner regex with Python one-liner?

我在一个未使用Perl的项目上工作,我想保持一致性。 这就是为什么我想知道我是否可以轻松地将这个方便的 Perl 单线替换为Python 单线

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

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

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

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

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

python -c 'import re,sys;print(re.sub(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

Perl 一个更现代的替代品是 Ruby,有人说它是 Perl 6。例如:

ruby -pe 'gsub /[es]/, "X"' <<< 'expression'

Python,由于对缩进的依赖,不适合单行,尤其是代码中需要使用“if...else...”之类的时候。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM