[英]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.