【发布时间】:2020-02-17 10:25:03
【问题描述】:
给定文本字符串,如
Assigned to: Hon Keith Davis Dept: S25
Assigned for All Purposes to: Hon. Howard Halm, Dept. 93
Judge Randolph M. Hammock Dept. 93
HONORABLE JOANNE B. O'DONNELL
Honorable Michael S. Williams
Judge: Hon. Yolanda Orozco
我想获取法官的姓名,以及他们来自的部门(如果有的话)。
这是我迄今为止想出的仅捕获名称的方法:
(?i)(?:(?:Hon(?:orable)?|Judge)(?:[:\. ]+))+((?-i)[A-Z][A-Za-z. '-]{3,})
问题是对于第一个和第三个字符串,Dept 部分被捕获,所以我得到Keith Davis Dept 和Randolph M. Hammock Dept
当我尝试通过附加来添加第二个捕获组时
[, ]+(?:(?:Dept)[\.: ]+([A-Z0-9]+))?
对于上述正则表达式,它适用于前 2 个字符串,但不适用于其余字符串。
如何从第一个捕获组中排除Dept,并使用第二个捕获组获取部门名称/编号?
当前正则表达式和示例:https://regexr.com/4n85p
【问题讨论】:
-
或许可以这样尝试
(?i)(?:(?:Hon(?:orable)?|Judge)(?:[:\. ]+))+((?-i)[A-Z][A-Za-z. '-]{3}(?:(?![,]? Dept\b).)+)见regex101.com/r/iSaqeQ/1 -
(?i)(?:(?:Hon(?:orable)?|Judge)[:. ]+)+((?-i)[A-Z][A-Za-z. '-]{3,})(?:[, ]+Dept[.: ]+([A-Z0-9]+))?$, demo. -
@WiktorStribiżew 不错,比我的表现更好。
-
@WiktorStribiżew 谢谢!如果你添加你的答案,我很乐意接受它
-
@Thefourthbird wiktor 的正则表达式几乎需要半步 :),这是由于您的模式中的负前瞻,对吗?
标签: regex