2011-10-31 15 views
0

Stringmatchesの便利な方法からJavaの正規表現にアクセスすることができますか、または長いルートを進んでPatternなどを作成することができますので、次のコードは2 "はい! "出力へのライン。 「はい」と印刷されます。 "no"行になります。私は何が欠けていますか?Java非常に単純な正規表現のパズル

import java.util.regex.*; 

public class TestRegex { 
public static void main(String[] args) { 
    String pattern = "html"; 
    String input = "somehtml.txt"; 

    Pattern p = Pattern.compile(pattern); 
    Matcher m = p.matcher(input); 

    if(m.find()) { 
     System.out.println("Yes!"); 
    } 
    else { 
     System.out.println("no"); 
    } 

    if(input.matches(pattern)) { 
     System.out.println("Yes!"); 
    } 
    else { 
     System.out.println("no"); 
    } 

} 

} 

出力:Win7の64ビットの

Yes! 
no 

Javaバージョン1.6。

C:\ Users \ユーザーマイケル・スミス>のjava -version Javaのバージョン "1.6.0_24" のJava(TM)SEランタイム環境(1.6.0_24-B07を構築) は、Java HotSpot(TM)64ビットサーバーVM (ビルド19.1-b02、混合モード)

答えて

5

matches()正規表現に一致する文字列全体をチェックします。 find()は、文字列のどこかで一致するものだけを検索します。

2

String#Matchesメソッドは入力テキスト全体に対してパターンをチェックします。このため、コードでnoが2回印刷されます。 Matcher#Find入力をスキャンして、入力に一致する次の一致番号 を検索します。

関連する問題