Python 执行正则表达式替换的最佳方法
我有以下代码来更改Python 执行正则表达式替换的最佳方法,python,regex,re,Python,Regex,Re,我有以下代码来更改提供程序“aws”块中的版本字符串。使用re.search()和re.sub()。是否可以只使用re.sub() 是的,这是可能的,当使用re.sub时,您需要使用捕获组和明确的替换反向引用,并且您需要稍微更改模式: def process(p, provider, version): return re.sub(r'(provider\s+"{}"\s+{{[\s\S]*?version\s+=\s+"~>\s*)[^"]*'.format(provider),
提供程序“aws”
块中的版本字符串。使用re.search()
和re.sub()
。是否可以只使用re.sub()
是的,这是可能的,当使用
re.sub
时,您需要使用捕获组和明确的替换反向引用,并且您需要稍微更改模式:
def process(p, provider, version):
return re.sub(r'(provider\s+"{}"\s+{{[\s\S]*?version\s+=\s+"~>\s*)[^"]*'.format(provider),
r'\g<1>{}'.format(version),
p)
替换为\g2.61
。看
详细信息
-group1((provider\s+“aws”\s+{[\s\s]*version\s+=\s+“~>\s*)
是对组值的反向引用(注意您不能使用\g
,因为下一个字符是数字!):\1
-一个词提供者
-1+空格\s+
-“aws”
“aws”
-1+空格\s+
-一个{
字符(在格式字符串中,必须加倍){
-0+字符,尽可能少[\s\s]*
-一个单词version
version
-包含1+空格的\s+=\s+
字符=
-a“~>
子字符串”~>
-0+空格\s*
-0+字符,而不是[^”]*
“
def process(p, provider, version):
return re.sub(r'(provider\s+"{}"\s+{{[\s\S]*?version\s+=\s+"~>\s*)[^"]*'.format(provider),
r'\g<1>{}'.format(version),
p)
(provider\s+"aws"\s+{[\s\S]*?version\s+=\s+"~>\s*)[^"]*