我很接近,但不完全在那里。我正试着把最后一个单词拼出来,把姓氏拔出来。
我的Regex:
被保险人姓名:\W*(?<Insured_last_Name>.*(
我正在搜索的文本:
被保险人名称:
FRED&乙基MERTZ
样本在这里。。。https://regex101.com/r/McdMcq/3
您可以将Insured Name:
匹配到行的末尾。然后匹配一个换行符和后面可选的空白字符。
然后在要获取最后一个单词的行,首先匹配到行的末尾,然后回溯到最后一个空格,并在组insured_last_name
中捕获1+个非空白字符
bInsured Name:.*r?ns*.* (?<insured_last_name>S+)
部件内
bInsured Name:
字面匹配.*r?ns*
匹配行的其余部分、换行符和0+个空白字符.*
匹配行的其余部分并匹配最后一个空格(?<insured_last_name>S+)
匹配组insured_last_name
中的1+个非空白字符
Regex演示
您可以简单地使用/w+$/gm
演示:https://regex101.com/r/McdMcq/4
说明:
w
:查找字母数字字母+
:至少一个$
:然后是字符串的末尾
如果中间有多行和潜在的垃圾数据,我建议您删除2个换行符(nn
(,然后进行Positive Lookbacking查找";名称";。演示:https://regex101.com/r/McdMcq/5
如果需要将结果存储在捕获组中,只需在两个正则表达式中的任何一个正则表达式上用括号和组名(即(?<insured_last_name>w+$)
(将w+$
括起来即可。
您可能需要进一步定义数据集,但您可以尝试
Insured Name:n+.*(?<insured_last_name>b.+)
示例
它从";被保险人名称:";,然后任何空行,然后将读取下一行,直到最后的字边界(不包括EOL(;之后的任何内容都在您的命名组中。