如何用正则匹配单引号标记外的内容(反向匹配)
匹配单引号之外的文本内容
原正则'.*?'只能捕获单引号包裹的内容,现在要反向匹配单引号外的部分——比如输入asd'asd'asd 'asd'asd,目标是提取出asd、asd、asd 、asd这些片段。
解决方案
用以下正则直接匹配所有单引号外的内容:
(?<=^|')[^']*(?='|$)
正则逻辑说明
(?<=^|'):正向回溯断言,确保当前位置要么在字符串开头,要么刚结束一个单引号[^']*:匹配任意数量的非单引号字符(这就是我们要的目标内容)(?='|$):正向前瞻断言,确保当前位置要么马上跟着单引号,要么到了字符串末尾
测试效果
把这个正则套用到输入asd'asd'asd 'asd'asd,会精准匹配到4段目标内容:
asd(第一个单引号前的文本)asd(前两个单引号之间的文本)asd(第三个单引号前带空格的文本)asd(最后一个单引号后的文本)
内容的提问来源于stack exchange,提问作者Guilherme Bley
相关产品推荐
相关产品推荐

