我在这里问了几个与正则表达式相关的问题,并且从答案中学到了很多东西,但是我时不时地碰到一些让我感到困惑的事情。这是那一次!
我有很多字符串(所有都是单行),我想分成三部分。但是,某些部分是可选的。
为了简化此示例,我将使用人们的名字。假设我有以下名字
Mr Homer Simpson
Mrs Marge Simpson Esq
Mr Homer Simpson Junior Esq
Bart Simpson
Lisa Simpson Esq
Maggie Simpson Junior Esq
使用replace函数,我想将它们分为Prefix,Name和Suffix。有了上面的列表,我希望看到
"Mr" "Homer Simpson" ""
"Mrs" "Marge Simpson" "Esq"
"Mr" "Homer Simpson" "Junior Esq"
"" "Bart Simpson" ""
"" "Lisa Simpson" "Esq"
"" "Maggie Simpson" "Junior Esq"
我能得到的最接近的是以下内容,这显然是遥不可及的
(((Mr | Mrs)\ s)?(。*?)((Senior | Junior)?(?:\ sEsq)?)
有人可以协助吗?
谢谢
最佳答案
尽管看起来您可能已经回答了我之前已经提出的自己的问题:
^(Mrs?)?\s?(\w+\s\w+)\s((Junior|Senior)?\s?Esq)?
以上假设名称将始终是两个单词。
执行示例:http://regexr.com?387u1