2015-06-13 29 views
0

我需要找到能夠匹配類似句子的正則表達式:匹配兩種替代或要麼在Java中使用正則表達式這兩個詞在Java中

"John Smith wants a dog and a cat" 

"John wants a fish and a snake" 

"Smith wants a spider and a horse" 

同款無法比擬的,如果不是「約翰」或「史密斯」或「約翰史密斯」沒有什麼或任何不同的詞。 例如,它不得匹配,如果這句話是這樣的:

"Jack wants a bird and a frog" 
"wants a banana and a lemon" 

同樣的話來代替動物名稱應爲捕獲組匹配。

我嘗試了很多組合,但我無法找到正確的「公式」,因爲如果在開頭處有不同的詞或只是空的話,它也會匹配。 例如像這樣:

(John)?(Smith)?wants a ([a-z]*) and a ([a-z]*) 

,但它的工作原理也是,如果我只是輸入:

"wants a tiger and a lion" 

通過尋找「虎」和「獅子」的羣體,而在這種情況下,我希望它匹配,只要沒有(正確)的名稱在開始。

希望對此的解釋是很清楚..... 感謝

回答

2

您需要的FNAME和LNAME之間使用OR

(?:John|Smith|John Smith) wants a ([a-z]*) and a ([a-z]*) 
+1

它完美。謝謝! –

相關問題