如何使用正则表达式匹配列表中的最后一个逗号和空格?
你之前的写法问题说明
(,\s)$仅匹配字符串末尾的,,但你的示例字符串末尾是Ten,所以匹配不到任何内容(,\s)[^,]*$可以匹配到目标,,但会同时把后面的Ten也纳入完整匹配结果,不符合需求
可用解决方案
方案1:匹配全字符串最后一个, (通用场景,不受前面内容限制)
使用带正向零宽预查的表达式:,\s(?=[^,]*$)
- 说明:
(?=[^,]*$)是仅做校验不消耗字符的正向预查规则,限定当前,后面不存在其他逗号、一直到字符串结尾,最终匹配结果仅包含你需要的,,不会带入后续的Ten。
方案2:精准匹配One后面的, (如果锚点文本One是固定的)
使用带反向零宽预查的表达式:(?<=One),\s
- 说明:
(?<=One)校验当前位置的前面恰好是One,匹配结果仅包含后续的,,精准度更高。
低版本正则引擎兼容方案
如果你的使用环境不支持零宽断言,可以继续使用(,\s)[^,]*$,直接提取第一个捕获组的内容即可,捕获组中只会保存你需要的, ,不需要处理完整匹配结果。
内容的提问来源于stack exchange,提问作者Magicskid
相关产品推荐
相关产品推荐

