2010-11-26 9 views
1
/* 
    patString: it$ 
    input: this is it 
    the output at 2 to the match operation at 1 is false, why? 
*/ 

import java.util.regex.Matcher; 
import java.util.regex.Pattern; 
import java.io.Console; 

public class Test { 
    public static void main(String args[]) { 
     Console con = System.console(); 
     String patString, input; 
     patternString = con.readLine("Enter pattern: "); //pattern 
     input = con.readLine("input: "); // input string to match against pattern 
     Pattern pattern = Pattern.compile(patString); 
     Matcher matcher = pattern.matcher(input); 
     boolean testMatch = matcher.matches(); //1 
     System.out.println("match found: " + testMatch); //2 
    } 
} 

答えて

7

Matcher.matches()メソッドは、文字列全体を指定のパターンと照合しようとします。つまり、パターンを囲む暗黙的な^...$があります。

あなたはMatcherのjavadocからfind()方法

をしたい:

  • matcher():パターン
  • find()に対する入力シーケンス全体にマッチしようとします。次のサブシーケンスを見つけようとしますそのパターンと一致する入力シーケンス。
+1

参照一致した、とだけ、場合場合: 'Matcher.matchesは()'しよう指定されたパターンと文字列全体を一致させます。 – khachik

+0

@khachik:そうです、私はそれを変更しました。 「ユーザーフレンドリーな」説明が私にとってはうまく機能しないということは、あいまいだと思います。 –

1
Matcher.matches()

パターンに対してパターンに対して全領域を一致させる

public boolean matches()

試みを文字列全体に一致しようとするため。 マッチが成功すると、start、end、およびgroupメソッドを使用してさらに多くの情報を取得できます。

戻り値: は、真の全体領域配列は、この正規表現エンジンのパターン

より良い説明は次のようになりMatcher.matches()

関連する問題