2014-11-25 77 views
1

我試圖寫的正則表達式的標識名稱與正則表達式,用於提取名稱以先生|夫人

Mr.|Mrs. 

啓動例如

Mr. A, Mrs. B. 

我試了好幾種表情。這些正則表達式通過在線工具在pythonregex.com上進行檢查。所使用的測試字符串是:

"hey where is Mr A how are u Mrs. B tt`" 

輸出提到頃的Python findall()功能,即

regex.findall(string) 

及其與regex各自的輸出如下。

Mr.|Mrs. [a-zA-Z]+ o/p-[u'Mr ', u'Mrs'] 

爲什麼A和B沒有出現先生和夫人?

[Mr.|Mrs.]+ [a-zA-Z]+ o/p-[u's Mr', u'. B'] 

爲什麼要用先生來代替A?

我嘗試了更多的組合,但這些都讓人困惑,所以這裏是他們。對於名稱部分,我知道正則表達式必須涵蓋更多條件,但是從基本開始。

+1

'[先生|夫人] +'完全錯誤。 – 2014-11-25 07:01:51

+0

點在正則表達式中有特殊含義。把它變成'\ .'好用'夫人?\。' – Braj 2014-11-25 07:02:02

+0

預期輸出是什麼? – thefourtheye 2014-11-25 07:02:59

回答

3

改變你的正則表達式如下圖所示,

(?:Mr\.|Mrs\.) [a-zA-Z]+ 

DEMO

  1. 你需要把Mr\.Mrs\.非捕獲或捕獲組內,使|(OR)適用於組本身。
  2. 您必須在您的正則表達式中轉義點以匹配文字點或其他字符,否則它將匹配任何字符。 .是正則表達式中特殊的元字符,它匹配除換行符之外的任何字符。

OR

即使較短,

Mrs?\. [a-zA-Z]+ 

?量詞在上述使得以前的字符s作爲任選一個。

+0

謝謝。這非常有幫助。 – fhulprogrammer 2014-11-26 09:26:49

+0

接受,如果這有幫助。 – 2014-11-26 09:28:30