编程语言
首页 > 编程语言> > 在python中使用正则表达式来替换以句点为整数的逗号

在python中使用正则表达式来替换以句点为整数的逗号

作者:互联网

我有一个字符串,其中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 online demo.

请注意,Python重新模式不是使用正则表达式文字符号编写的,/和/ i被视为模式的一部分.此外,模式不需要不区分大小写的修饰符,因为它内部没有字母(与大小写字母不匹配).

此外,你使用了第二个lookbehind(?< = [0-9]),而必须有一个正向前瞻(?= [0-9]),因为,(?< = [0-9])模式从不匹配(匹配,然后引擎尝试确保,是一个数字,这是假的).

标签:python,regex,replace,substitution
来源: https://codeday.me/bug/20190701/1346259.html