正则表达式正向预查多次匹配问题:如何提取所有,com前的字符串
解决正则匹配问题
你遇到的问题是原正则仅匹配到第一个符合条件的内容,还包含了不需要的逗号,我们可以调整正则来精准提取所有目标内容:
推荐正则表达式
([^;,]+)(?=,com)
正则解释
[^;,]+:匹配非分号、非逗号的任意字符序列,刚好对应分号分隔字段里的前缀部分(比如abc、ghi)(?=,com):正向预查规则,确保当前匹配的内容后面紧跟着,com,只筛选出符合要求的字段
匹配结果
用这个正则对目标字符串abc,com;def,med;ghi,com;jkl,med做全局匹配,会得到两个匹配项:abc和ghi,将它们用逗号连接就得到你想要的abc,ghi。
如果需要更严谨处理字符串开头的场景(比如目标字段在字符串最前端),可以用下面的正则,确保匹配的字段前面是字符串开头或者分号:
(?<=^|;)([^;,]+)(?=,com)
内容的提问来源于stack exchange,提问作者Abhishek
相关产品推荐
相关产品推荐

