繁体   English   中英

Python re.sub()古怪

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM