Python re.sub()古怪

ton*_*ne7 6 python regex

我是Python的新手,实际上这是我的第一个脚本.

我正在努力使用Python的正则表达式.特别re.sub()

我有以下代码:

variableTest = "192"
test = re.sub(r'(\$\{\d{1,2}\:)example.com(\})', r'\1' + variableTest + r'\2', searchString, re.M )
Run Code Online (Sandbox Code Playgroud)

有了这个,我试图匹配内部的东西host": "${9:example.com}",searchStringexample.com用服务器名称或IP地址替换.

如果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}:包含\d1到999之间的数字.

任何帮助将不胜感激!

nne*_*neo 8

问题是放入IP variableTest将导致替换字符串,如下所示:

r'\18.8.8.8\2'
Run Code Online (Sandbox Code Playgroud)

如您所见,第一组引用是指第18组,而不是第1组.因此,re抱怨无效的组引用.

在这种情况下,您希望使用\g<n>语法:

r'\g<1>' + variableTest + r'\g<2>'
Run Code Online (Sandbox Code Playgroud)

产生例如r'\g<1>8.8.8.8\g<2>'.