Python正则表达式:仅当逗号后面不跟数字时才在逗号后面添加空格

Python正则表达式:仅当逗号后面不跟数字时才在逗号后面添加空格,python,regex,str-replace,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 ,

仅当以下字符不是数字(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
只使用“逗号”

使用这个:

newLine = re.sub(r'[,]+(?![0-9])', r' , ', newLine)
这里使用负前瞻
(?![0-9])
检查逗号后面没有数字

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

更新:如果不仅仅是逗号和其他东西,那么将它们放在字符类
[]
中,并使用
()
在组
\1
中捕获它们


“previous”的意思是“来之前”,但你用它作为“来之后”。你的意思可能是“跟随”?是的,谢谢你的更正。谢谢,如何将其扩展为逗号/斜杠/反斜杠?(因为我使用了\1,现在我必须编写要放置的特定字符(我不希望它是3行)@SagiLow是的,你也可以这样做。请查看我的更新答案。你会发现我是如何在组中捕获这些字符的(
\1
)。
newLine = re.sub(r'([,/\\]+)(?![0-9])', r' \1 ', newLine)