PCRE正则如何编写仅匹配含右括号无左括号的字符串
PCRE正则匹配调整方案
可用正则表达式
写法1(性能最优)
^[^(]*\)$
写法2(否定前瞻实现,扩展性强)
^(?!.*\().*\)$
规则说明
- 核心校验逻辑:要求整串不存在左括号
(,且必须以右括号)结尾,完全匹配需求:- 测试串
abc):整串无左括号,末尾为右括号,匹配成功 - 测试串
a(bc):串内存在左括号,匹配失败返回NULL
- 测试串
原有正则失效原因
你之前使用的(.*?)\((*SKIP)(*F)|.*?\)没有做整串匹配限制,左括号前的内容被跳过之后,后半段的bc)仍然会被右侧规则匹配到,出现部分匹配的异常结果。
内容的提问来源于stack exchange,提问作者mortenbo
相关产品推荐
相关产品推荐

