2012-02-20 18 views
1

こんにちは私は次のコードを持っている正規表現を使用して文字列内のフレーズを発見しようとしています。フレーズを見つけるためのJavaのユーザー正規表現

public static void main(String[] args) { 
    String inputText = "test and test Test hello hello hello test test hello hello "; 

    //Pattern pattern = Pattern.compile("((\\w{3,}?)\\W(\\w{3,}?)\\W).*\\2\\W\\3", Pattern.CASE_INSENSITIVE); 

    Pattern twoWordPrasePattern = Pattern.compile("(([a-zA-Z]{3,})\\W([a-zA-Z]{3,})\\W).*\\2\\W\\3", Pattern.CASE_INSENSITIVE); 

    Matcher matcher = twoWordPrasePattern.matcher(inputText);  
    while (matcher.find()) { 

     System.out.println(inputText.substring(matcher.start(), matcher.end())); 

     System.out.println(matcher.group(1)); 

    } 

} 

私はこんにちはこんにちはグループが出かけるのはなぜですか? ありがとうございました。すべてのフレーズを見つけるためにパターンを変更するにはどうすればよいですか?リチャード

答えて

3

matcher.find()は、前回の試合がどこから中止されたかを常に検索します。

test Test hello hello hello test test 

そうで検索するように残っているすべてが終わりに

hello hello 

です:最初の呼び出しは、この検索します。その最終的なhello helloはあなたのパターンと一致しません(2つの単語しかなく、あなたのパターンは少なくとも4つの単語を必要とします:グループと3という2つの単語をつかみ、後で\2\W\3を見つける)出力。

+0

ruakhさん、ありがとうございました。今、どのようにパターンを変更してすべてのフレーズ – Richard

関連する問題