[英]Python re.sub() weirdness
我是Python的新手,实际上这是我的第一个脚本。
我正在努力使用Python的正则表达式。 特别是re.sub()
我有以下代码:
variableTest = "192"
test = re.sub(r'(\$\{\d{1,2}\:)example.com(\})', r'\1' + variableTest + r'\2', searchString, re.M )
有了这个,我试图在searchString
匹配host": "${9:example.com}"
,并用服务器名称或IP地址替换example.com
。
如果variableTest
包含IP,则失败。 我收到以下错误: sre_constants.error: invalid group reference
我用variableTest
等于“127.0.0.1”,“1”,“192”,“192.168”进行了测试。 “127.0.0.1”有效,其余则没有。 如果我在前面添加一封信,它也可以。
variableTest
是一个字符串 - 使用type(variableTest)
验证
我完全迷失了为什么会这样。
如果我删除替换字符串中的r'\\1'
,它也可以。 r'\\1'
将包含${\\d}:
,其中\\d
为1到999之间的数字。
任何帮助将不胜感激!
问题是在variableTest
中放置一个IP将导致替换字符串,如下所示:
r'\18.8.8.8\2'
如您所见,第一组引用是指第18组,而不是第1组。因此, re
抱怨无效的组引用。
在这种情况下,您希望使用\\g<n>
语法 :
r'\g<1>' + variableTest + r'\g<2>'
其产生例如r'\\g<1>8.8.8.8\\g<2>'
。
re.sub(pattern,repl,string,count = 0,flags = 0)
这是re.sub()的语法
你似乎在调用标志re.M的方式,应该像flags = re.M,否则python会把它看作是你的意思是count = re.M
试一试,因为这是我唯一可以决定的事情
还给我一个searchString变量可能包含的示例
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.