VB.NET正则表达式需求:排除首字符为P且含下划线的匹配项
正则表达式修正方案
修正后的正则表达式
\[((?!P.*_)[^\]]+)\]
逻辑拆解
\[:匹配左方括号(?!P.*_):负向预查,排除括号内以P开头且后续包含下划线_的内容(精准命中你要排除的[PABCD_23]、[Pblah_blah]这类情况)[^\]]+:匹配括号内任意非右方括号的字符,确保不会跨括号匹配\]:匹配右方括号
匹配/不匹配验证
- 可匹配内容:
[ABCD]、[ABCD_D]、[PABCD]、[ABPCD]、[ABP_CD] - 不可匹配内容:
[PABCD_23]、[Pblah_blah]
原正则问题说明
你之前的\[([^P]*[^_])]中,[^P]*会匹配任意不含P的字符,导致所有包含P的内容都被排除,这和你的需求不符。修正后的正则仅针对「首字符为P且含下划线」的情况做排除,其余符合格式的内容都能正常匹配。
内容的提问来源于stack exchange,提问作者Lord45
相关产品推荐
相关产品推荐

