如何修改正则表达式,匹配指定字符串并排除含特定子串的内容?
正则匹配排除特定子串的简便实现方法
可以借助正则的负向前瞻断言实现,无需逐一列举需保留的字符串。只需在原有匹配规则基础上增加排除逻辑即可:
最终正则表达式:
^(?!.*foo_baz)(foo_.*|bar_.*)$
规则拆解
^(?!.*foo_baz):负向前瞻断言,作用是确保整个字符串中不存在foo_baz子串,一旦检测到则直接排除该字符串(foo_.*|bar_.*):你原本的匹配规则,限定字符串必须以foo_或bar_开头,后续可接任意内容$:匹配字符串结尾,避免出现部分匹配的无效结果
效果验证
- 会被匹配保留的字符串:
foo_bar、foo_bar_baz、bar_baz、bar_foo - 会被排除的字符串:
foo_baz、foo_baz_abc、bar_xxx_foo_baz
内容的提问来源于stack exchange,提问作者Kevin
相关产品推荐
相关产品推荐

