正则表达式将带有选项stubstrings的字符串拆分为三个

时间:2014-02-07 14:11:56

标签: java regex

我在这里问了几个与正则表达式相关的问题,并且我从答案中学到了很多东西,但是我时不时地碰到了一些让我感到难过的东西。这是其中一次!

我有一堆字符串(所有这些都是单行),我想分成三个部分。但是,有些部分是可选的。

为简化此示例,我将使用人名。让我们假设我有以下名字

Mr Homer Simpson
Mrs Marge Simpson Esq
Mr Homer Simpson Junior Esq
Bart Simpson
Lisa Simpson Esq
Maggie Simpson Junior Esq

使用替换功能,我想将它们分为Prefix,Name和Suffix。根据上面的列表,我希望看到

"Mr"    "Homer Simpson"    ""
"Mrs"   "Marge Simpson"    "Esq"
"Mr"    "Homer Simpson"    "Junior Esq"
""      "Bart Simpson"     ""
""      "Lisa Simpson"     "Esq"
""      "Maggie Simpson"   "Junior Esq"

我能得到的最接近的是以下,显然已经过了

((先生| MRS)\ S)((高级|小型)(????:\ SESQ))?(*?)

有人可以帮忙吗?

由于

1 个答案:

答案 0 :(得分:1)

虽然看起来你可能已经回答了我自己已经开始的问题:

^(Mrs?)?\s?(\w+\s\w+)\s((Junior|Senior)?\s?Esq)?

以上假设名称总是两个字。

执行示例:http://regexr.com?387u1