正则匹配:字符串中左右不全为数字的有效逗号计数
匹配特定逗号的正则表达式方案
给定字符串:abc,400,00,foo,bar,34,000,,hello,bye,需要匹配满足以下条件的逗号:
- 左右均为非逗号字符
- 左右字符不全为数字
示例中括号标注的即为目标逗号:abc(,)400,00(,)foo(,)bar(,)34,000,,hello(,)bye
正则表达式
(?<![,\d]),(?![,\d])|(?<=\D),(?=\d)|(?<=\d),(?=\D)
规则解释
这个正则通过三个分支覆盖所有符合条件的场景:
(?<![,\d]),(?![,\d]):匹配左右既不是逗号也不是数字的逗号(比如abc,400、foo,bar里的逗号)(?<=\D),(?=\d):匹配左非数字、右数字的逗号(比如bar,34里的逗号)(?<=\d),(?=\D):匹配左数字、右非数字的逗号(比如00,foo、hello,bye里的逗号)
同时,正则自动排除了两种不符合要求的逗号:
- 连续逗号(比如
000,,hello里的逗号) - 左右全为数字的逗号(比如
400,00、34,000里的逗号)
内容的提问来源于stack exchange,提问作者wipallen
相关产品推荐
相关产品推荐

