Google Sheets正则:捕获非Zn/Zns前置的点加空格匹配组
问题
需要捕获由句号+空格组成的匹配组,但仅保留未被Zn或Zns前置的目标。此前测试过以下正则,均无法满足需求:
[^Z][^n](\.\s)([^Z][^n]|[^Z][^n][^s])(\.\s)(?!Zn)(\.\s)
测试样本:
1) aaa. Zn. bbb 2) aaa. Zn. bbb. 3) aaa Zn. bbb. 4) aaa Zn. bbb 5) aaa Bns. bbb 6) aaa Bns. Bbb 7) aaa Zn. Aaa Bns. Bbb 8) 1 9) aaa 10) aaa. 11) aaa Abbb 12) aaa. Zns. bbb 13) aaa. Zns. bbb. 14) aaa Zns. bbb. 15) aaa Zns. bbb
预期捕获aaa. 、bbb. 、Bns. 这类组,排除Zn. 和Zns. 。
解决方案
使用反向否定预查即可精准过滤掉前置为Zn或Zns的情况,推荐两种正则写法:
写法1(清晰版)
(?<!Zn)(?<!Zns)(\.\s)
写法2(简洁版)
(?<!Zns?)(\.\s)
正则说明
(?<!Zns?):反向否定预查规则,s?表示s可选,即同时排除前置为Zn或Zns的场景(\.\s):捕获需要的句号+空格组合
样本匹配结果
对应测试样本的有效捕获项:
aaa.aaa.、bbb.bbb.- 无有效捕获
Bns.Bns.Bns.
8-11) 无有效捕获aaa.aaa.、bbb.bbb.- 无有效捕获
内容的提问来源于stack exchange,提问作者Lod
相关产品推荐
相关产品推荐

