[英]Can I use python “re.sub” instead of “sed”?
我想将命令从一行转换为多行:
输入示例:
myprog -library lib -topcell top -view layout
输出:
myprog \
-library lib\
-topCell top\
-view layout\
我可以使用“ sed”执行以下操作:
echo $cmd | sed 's/\s-[a-zA-Z0-9]*\s/\\\n\t & /g'
但是我不能使用re.sub通过python复制它。 我注意到,re.sub不接受正则表达式作为第二个参数,如下所示:
>>> re.sub(r'-[a-zA-Z0-9]*\s',r'[a-zA-Z0-9]*\s',cmd)
‘myprog [a-zA-Z0-9]*\\slib [a-zA-Z0-9]*\\stop [a-zA-Z0-9]*\\slayout'
你有解决方案吗?
x="myprog -library lib -topcell top -view layout"
print re.sub(r"(?=-)",r"\\\n\t",x)
尝试这个。
在python中,就像
>>> s = "myprog -library lib -topcell top -view layout"
>>> print re.sub(r'(-[a-zA-Z0-9]*\s)',r'\\\n\t\1', s)
myprog \
-library lib \
-topcell top \
-view layout
>>> print re.sub(r'(-[a-zA-Z0-9]*\s)',r'\\\n\t \1 ', s)
myprog \
-library lib \
-topcell top \
-view layout
在sed &
替换部分中打印匹配的字符。 在python中,我只是使用捕获组。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.