正则匹配:如何命中[abc],仅排除双方括号包裹的[[abc]]
正则匹配解决方案
核心匹配规则
- 匹配目标:
[abc] - 唯一排除场景:
[[abc]](目标两侧同时被[]包裹) - 需命中的场景:
- 无额外包裹的普通
[abc] - 仅左侧多一个
[的[[abc] - 仅右侧多一个
]的[abc]]
- 无额外包裹的普通
可用正则表达式
(?<!\[)\[abc\]|\[abc\](?!\])
规则说明
你之前使用的(?<!\[)\[abc\](?!\])逻辑为「同时满足左侧无[、右侧无]才匹配」,所以单侧出现额外括号就会被排除。
本次提供的正则将逻辑调整为「只要任意一侧没有额外括号就匹配」,刚好对应「仅两侧同时有额外括号才排除」的需求,兼容JS、Java、Python、Go等绝大多数主流正则引擎。
匹配验证结果
| 测试文本 | 是否匹配 | 结果说明 |
|---|---|---|
[abc] | 是 | 无额外包裹,正常命中 |
[[abc]] | 否 | 两侧同时存在额外[],触发排除规则 |
[[abc] | 是 | 仅左侧有额外[,正常命中 |
[abc]] | 是 | 仅右侧有额外],正常命中 |
内容的提问来源于stack exchange,提问作者maxc137
相关产品推荐
相关产品推荐

