You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#正则匹配括号分组:排除包含精确全大写单词BAD的分组

解决方案

你可以使用带负向先行断言的正则实现需求,有效正则如下:

\((?!.*\bBAD\b).*?\)

正则逻辑说明

  • \( 匹配左括号起始标识
  • (?!.*\bBAD\b) 负向先行断言:要求当前左括号之后的内容里,不存在全大写的精确独立单词BAD,其中\b为单词边界符,确保不会误判包含B/A/D字母的其他普通单词
  • .*? 非贪婪匹配括号内的所有内容,直到遇到最近的右括号
  • \) 匹配右括号结束标识

匹配效果验证

用你提供的示例字符串测试,最终匹配结果为:

  • (Today is a blue day)
  • (Today is a good day)
  • (Today is a green day)
  • (Today is a blue day)
    成功过滤了包含全大写BAD的括号分组。

常见错误方案说明

你之前测试的\(.[^BAD]+?\)失效的核心原因是[^BAD]是排除单个字符B、A、D,而非排除完整的BAD单词序列,只要内容里出现B/A/D任意单个字母就会中断匹配,自然无法适配带Blue这类包含B字母的正常内容场景,而负向先行断言是对完整单词序列做校验,不会存在该问题。

注意:如果你的待处理内容里括号包含换行符,需要开启正则的DOTALL(单行)模式,确保.*可以匹配到换行符。


内容的提问来源于stack exchange,提问作者Kennetic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 04:24:06