给出诸如
的文本字符串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,})
问题在于,对于第1个和第3个字符串,Dept
部分已被捕获,因此我得到了Keith Davis Dept
和Randolph M. Hammock Dept
当我尝试通过添加来添加第二个捕获组时
[, ]+(?:(?:Dept)[\.: ]+([A-Z0-9]+))?
对于上述正则表达式,它适用于前2个字符串,但不适用于其余字符串。
如何从第一个捕获组中排除Dept
,并使用第二个捕获组找出部门名称/号码?
当前正则表达式和示例:https://regexr.com/4n85p
答案 0 :(得分:3)
您可以使用
(?i)(?:(?:Hon(?:orable)?|Judge)[:. ]+)+((?-i)[A-Z][A-Za-z. '-]{3,})(?:[, ]+Dept[.: ]+([A-Z0-9]+))?$
请参见regex demo
详细信息
(?i)
-区分大小写(?:(?:Hon(?:orable)?|Judge)[:. ]+)+
-1+次出现的Hon
或Honorable
或Judge
,后跟1+个冒号,点,空格((?-i)[A-Z][A-Za-z. '-]{3,})
-第1组:
(?-i)
-区分大小写[A-Z]
-大写字母[A-Za-z. '-]{3,}
-3个或更多ASCII字母,点,空格,撇号或连字符(?:[, ]+Dept[.: ]+([A-Z0-9]+))?
-一个可选的非捕获组,匹配以下情况的1或0:
[, ]+
-1个以上的逗号或空格Dept
-文字[.: ]+
-1个以上的点,冒号或空格([A-Z0-9]+)
-第2组:1个以上大写字母或数字$
-字符串的结尾。更多提示:
\b
之后添加(?i)
\s
(或\h
(如果支持-仅匹配水平空格)替换文字空间)。答案 1 :(得分:0)
.*(?:(?:H[Oo][nN](?:[oO][a-zA-Z]+(?:[^.])?)?)|(?:Judge:?))\.?\s*([a-zA-Z .']+),?\s*(?:Dept[:.]\s*([a-zA-Z0-9]+))?\n
请在您的link
中尝试上述表达式.*(?:(?:H[Oo][nN](?:[oO][a-zA-Z]+(?:[^.])?)?)|(?:Judge:?))\.?\s*(?<judge_name>[a-zA-Z .']+),?\s*(?:Dept[:.]\s*(?<department>[a-zA-Z0-9]+))?\n