2012-03-06 8 views
1

簡単な質問。Javaでregexpを使って文字列にパターンが含まれていることを確認する

if(Pattern.matches("^(0039|\\+39)", "00392121")) System.out.println("Yes"); 
    else System.out.println("No"); 

パターンが2121が欠落しているので、私は明らかにNo答えとしてを持っている:私は正規表現は単純なパターンが含まれているかどうかを確認する必要がある場合、私はこのような何かを書く場合、私の場合は、^0039だろう。パターンを^(0039|\\+39).*に変換する必要がありますか、これに適した方法がありますか?

私はETLエンジンのためのメソッドを書いているので、これを使う誰もがregexpの仕組みを認識しているとは思っていないので、私は頼んでいます。私は多くの電子メールを予知しています明白な答えでcomplaing:「APPEND *あなたの正規表現に。」正規表現は全体文字列に一致した場合*

答えて

2

私はあなたがMatcher.findメソッドを使用するように助言する:

public static void main(String[] args) { 
    Matcher m = Pattern.compile("^(0039|\\+39)").matcher("00392121"); 

    if (m.find()) 
     System.out.println("Found"); 
} 

注:それは^で始まるので、これが唯一のパターンの最初の出現を検索します。 Matcher.matchesを呼び出す

Pattern.compile(regex).matcher(input).matches() 


Pattern.matches(regex, input)はつまるところことに注意してください。そして、APIによれば、それは入力全体に対して一致します:

matchesメソッドは入力シーケンス全体をパターンと照合しようとします。

1

String.matches()方法はtrueを返します。

はい、末尾に.*を追加する必要があります。

0

この特殊なケースでは、regexpは使用せず、代わりにStringのstartsWith(String prefix, int toffset)を使用します。

特に、これを使用すると誰もが正規表現の仕組みを認識していない場合は、

関連する問題