【发布时间】:2019-11-04 16:43:42
【问题描述】:
我正在用 Java 编写一个正则表达式来匹配名称,但想要排除包含某些单词的行的匹配项:“Deputy Clerk”或“Electronic Recording”(不区分大小写)。
这是我的正则表达式:
(?i)(?:(?:Hon(?:orable)?|Judge)[:. ]+)+(?-i)([A-Z][A-Za-z. '-]{5,}(?i)(?:,? +[JS]R +\.)?)(?!Deputy Clerk|Electronic Recording)
我打算让它只匹配以下 3 行中的第一行,但它目前正在返回所有 3 行的匹配项。
Hon. Judge: Amy D. Hogue
HONORABLE Lesley Briones Jr. JUDGE DEPUTY CLERK
HONORABLE JUDGE PRO TEM ELECTRONIC RECORDING MONITOR
我的负前瞻有什么问题? https://regexr.com/4o3sr
【问题讨论】:
-
哪些词被列入黑名单(即禁词列表是什么)?
-
@TimBiegeleisen “副文员”和“电子录音”。我已经编辑了我的帖子。
-
请在您尝试创建的正则表达式后面添加语言。
-
见regex101.com/r/7JedgH/1 您尝试失败的单词被捕获到第1组。如果左侧上下文右侧有任何被禁止的单词,您需要全部失败,或者调和第 1 组模式。
-
@WiktorStribiżew 谢谢,您的正则表达式正是我所需要的。你能解释一下——也许是在一个答案中——你所说的“缓和第 1 组模式”是什么意思?