Regex处理名称时遇到未知问题

cidc1ykv  于 2023-10-22  发布在  其他
关注(0)|答案(1)|浏览(136)

我在分析有奇怪复合结构的名字串。目前的阵型给我带来了一个问题,那就是这些名字:

Edward St. Loe Livermore
Henry St. George Tucker III
Henry St. John

这个模式(.*)(St\.\s\w+)\s(.*)解析前两个名字,完全忽略第三个。
这个模式(.*)(St\.\s\w+)|(St\.\s\w+\s(.*))$也返回第三个名字,但是去掉了前两个名字的姓。
我使用这个保存https://regex101.com/来测试正则表达式模式
到目前为止,我还不知道什么模式会在匹配中返回所有三个名称的姓氏,或者我是否需要在代码中执行条件语句来分别解析三个元素名称,这似乎效率很低。
Tia

0yg35tkg

0yg35tkg1#

使用以下正则表达式:

(.*)(St\.\s\w+)\s*.*

Online Demo

正则表达式匹配如下:

| 节点|解释|
| --|--|
| (|分组并捕获到\1:|
| .*|除\n之外的任何字符(0次或多次(匹配最大可能量))|
| )|结束\1|
| (|分组并捕获到\2:|
| St|“圣”|
| \.|- 是的|
| \s|空格(\n、\r、\t、\f和““)|
| \w+|单词字符(a-z,A-Z,0-9,_)(1次或多次(匹配最大可能量))|
| )|结束\2|
| \s*|空格(\n、\r、\t、\f和““)(0次或更多次(匹配可能的最大数量))|
| .*|除\n之外的任何字符(0次或多次(匹配最大可能量))|

相关问题