我需要替换字符串的一部分,然后遍历re.sub。
import re
line = "-p ${config.tab} -sp"
rep = re.sub('-p(.*?)-sp', 'sam', line)
我希望输出是:-
-p sam -sp
但是它用山姆代替了所有东西并给予:-
sam
有什么帮助吗?
问题与-p(.*?)-sp
该-p
和-sp
在起点和终点由正则表达式引擎消耗。并re.sub
重新放置正则表达式匹配的整个字符串
那是http://regex101.com/r/oH3lV9/1
解决方案
您可以使用环顾四周
>>> rep = re.sub('(?<=-p )(.*?)(?= -sp)', 'sam', line)
>>> rep
'-p sam -sp'
(?<=-p )
断言该字符串以前缀开头-p
但未使用,只是检查它是否仅前缀
(?= -sp )
断言该字符串后跟 -sp
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句