Python正则表达式:只有在后面没有数字时才用逗号添加空格

时间:2014-03-26 14:56:59

标签: python regex str-replace

我想在字符串之前和之后在字符串中添加空格,前提是以下字符不是数字(9-0)。我尝试了以下代码:

newLine = re.sub(r'([,]+[^0-9])', r' \1 ', newLine)

但似乎\1正在使用2个匹配的字符而不仅仅是逗号。 例如:

>>> newLine = "abc,abc"
>>> newLine = re.sub(r'([,]+[^0-9])', r' \1 ', newLine)
"abc ,a bc"

预期产出:

"abc , abc"

如何告诉sub只接受'逗号'?

1 个答案:

答案 0 :(得分:5)

使用这个:

newLine = re.sub(r'[,]+(?![0-9])', r' , ', newLine)

这里使用否定前瞻(?![0-9]),它检查逗号后面没有数字。

你的正则表达式没有用,因为你在一个组中选择了逗号和下一个字符(使用([,]+[^0-9]))并在两侧放置了空格。

更新:如果它不仅是逗号和其他内容,请将它们放在角色类[]中,并使用{{1}将其捕获到组\1中}}

()