2012-02-20 13 views
0

は、私はいくつかの文字列を持っている:JavaのREGEX演算子の優先順位

john doe happy 
george smith is happy 

ここに私の正規表現です:

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

は、私はいつもにグループ1を必要とする「ジョン・ドウ」または「ジョージ・スミスのような名前にします幸せ 『や『幸せです』今

、『ジョージ・スミスは、』満足しているA「私は常にどちらかのことにグループ2が必要

』私は本当にそれが "ジョージ・スミス"と "幸せ"であることを望むときに "ジョージ・スミス・イズ"と "幸せ"に一致します。

"幸せ" ?

答えて

3

+は貪欲です。つまり、できるだけ多くの文字と一致するので、is happyはあなたの正規表現とは一致しません。あなたは(まだ一つ以上の)可能性としていくつかの文字とマッチし、+?にそれを変更することにより、怠惰な試合にこれを変更することができます。

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

おかげで、完璧に動作します! – RichardW

関連する問題