2014-02-07 26 views
0

我已經在這裏提出了一些與正則表達式相關的問題,並且從答案中學到了很多東西,但是偶爾會碰到一些讓我困惑的東西。這是其中的一次!正則表達式將字符串與選項stubstrings拆分爲三個

我有一個字符串的負載(所有這些都是單行),我想分成三部分。但是,一些零件是可選的。

爲了簡化這個例子,我將使用人名。讓我們假設我有以下的名稱

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

使用替換功能,我會想這些分成前綴名和後綴。通過上面的列表中,我希望看到

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

我能得到的最接近的是下面的,這顯然是遙遠

((先生|夫人)\ S)?(。*?) ((Senior | Junior)?(?:\ sEsq)?)

任何人都可以協助嗎?

感謝

+0

你知道,我可能在這裏回答了我自己的問題。以下是否正確? ^(先生(?:s)* \ s)?(。*?)(Junior(\ sEsq)?| Senior(\ sEsq)?| Esq | $) – Typhoon101

回答

1

雖然它看起來像你可能已經回答了你自己的問題,我已經開始有前:以上

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

假定名字將永遠是兩個詞。

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

+0

對我有用。謝謝 – Typhoon101

相關問題