我在分析有奇怪复合结构的名字串。目前的阵型给我带来了一个问题,那就是这些名字:
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
1条答案
按热度按时间0yg35tkg1#
使用以下正则表达式:
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次或多次(匹配最大可能量))|