我有一个字符串,其中IP地址中有一个错误的逗号(‘,’),它应该只是一个句点(‘.’).整个字符串是:
a = 'This is a test, which uses commas for a bad IP Address. 54.128,5,5, 4.'
在上面的字符串中,IP地址54.128,5,5应为54.128.5.5
我尝试使用re.sub(),如下所示,但它似乎不起作用……
def stripBadCommas(string):
newString = re.sub(r'/(?<=[0-9]),(?<=[0-9])/i', '.', string)
return newString
a = 'This is a test, which uses commas for a bad IP Address. 54.128,5,5, 4.'
b = ''
b = stripBadCommas(a)
print a
print b
我的问题:使用正则表达式搜索和替换由整数/数字限制的逗号的正确方法是什么,而不会破坏其他适当的逗号和句点?
在此先感谢您提供的任何帮助.
解决方法:
你可以用
def stripBadCommas(s):
newString = re.sub(r'(?<=[0-9]),(?=[0-9])', '.', s)
return newString
请注意,Python重新模式不是使用正则表达式文字符号编写的,/和/ i被视为模式的一部分.此外,模式不需要不区分大小写的修饰符,因为它内部没有字母(与大小写字母不匹配).
此外,你使用了第二个lookbehind(?< = [0-9]),而必须有一个正向前瞻(?= [0-9]),因为,(?< = [0-9])模式从不匹配(匹配,然后引擎尝试确保,是一个数字,这是假的).