2012-02-20 63 views
0

我有幾個字符串:Java的正則表達式運算符優先級

john doe happy 
george smith is happy 

這裏是我的正則表達式:

([a-zA-Z ]+) (is happy|happy) 

我需要1組始終像「張三」或「喬治·史密斯的名稱「

我需要2組永遠是要麼‘開心’或‘開心’

眼下,‘喬治·史密斯是幸福’一「喬治史密斯是」和「開心」......當我真的希望它成爲「喬治史密斯」和「是開心」

我如何使「開心」優先於「開心」 ?

回答

3

+是貪婪的,這意味着它會匹配儘可能多的字符,所以你永遠不會匹配is happy與你的正則表達式,因爲它被寫入。你可以通過改變它更改爲一個懶惰匹配+?,其中少字符匹配越好(還是一個或多個):

([a-zA-Z ]+?) (is happy|happy) 
+0

謝謝,完美的作品! – RichardW 2012-02-20 06:28:32