此问题已在此处有答案:
What is a regex to match a string NOT at the end of a line?(1个答案)
3天前关闭。
我想用正则表达式来替换“,”与“,”(逗号后跟空格),但不是在字符串的末尾:
“a,B,c,d”到“a,b,c,d”
而且
“柏林,伦敦,奥芬巴赫,杰拉”改成“柏林,伦敦,奥芬巴赫,杰拉”
或
“123,2345,653,12”至“123,2345,653,12”
我在Python中尝试
import re
re.sub(r'([1-9a-zA-Z]),([1-9a-zA-Z])', r'\1, \2', "a,b,c,d,")
但得到的结果是:
'a,B,c,d,'(“b”和“c”之间的逗号后缺少空格)
怎么了?
2条答案
按热度按时间sqxo8psd1#
您可以简单地在
,(?=.)
上进行替换,这将只匹配未出现在输入末尾的逗号。li9yvcax2#
您可以使用
,(?!$)
匹配除行尾以外的任何逗号。(
|
查看是否缺少尾随空格)说明:
(?! ... )
是一个负的前瞻。它检查前一个匹配没有被这个组的内容跟随。$
-表示字符串结束的元符号。