正则表达式:
([A-Za-z]+),\s([A-Za-z]+)\.\s(.*)[\s\(|\b]
测试字符串:
Futrelle, Mrs. Jacques Heath(Lily May Peel)
Heikkinen, Miss. Laina
正则表达式问题屏幕截图:
预期:
实际:
编辑:
对我的答案做了一些修改:
([A-Za-z]+)\,\s*([A-Za-z]+)\.\s*(.*?)(?:\s*\(|$)
请参见regex demo:
答案 0 :(得分:1)
请注意,(.*)[\s(|\b]
会匹配并捕获尽可能多的0+个字符,直到最后一个空格(\s
),(
,|
或一个空格字符[\s(|\b]
是一个肯定的字符类,其中\b
不是单词边界,它失去了零宽度的含义,并且|
被解析为文字管道字符。
您可以使用negated character class模式,[^(]*
(或[^(]+
):
([A-Za-z]+),\s([A-Za-z]+)\.\s([^(]*)
^^^^^^^
请参见regex demo
要考虑可变数量的空白字符,可以使用
([A-Za-z]+),\s*([A-Za-z]+)\.\s*([^(]*)
^^^ ^^^
其中\s*
匹配0个或多个空格字符。