2012-02-23 9 views
3

と一致する正規表現パターンを作成したいのですが、パターン文字列がでない場合は、の文字列をテスト文字列または入力文字列に続けてください。ここに私が試したものがあります:特定のpositonでのみ文字列に一致するJava正規表現パターンを作成するには?

 Pattern p = Pattern.compile("google.com");//I want to know the right format 

     String input1 = "mail.google.com"; 
     String input2 = "mail.google.com.co.uk"; 

     Matcher m1 = p.matcher(input1); 
     Matcher m2 = p.matcher(input2); 

     boolean found1 = m1.find(); 
     boolean found2 = m2.find();//This should be false because "google.com" is followed by ".co.uk" in input2 string 

助けていただければ幸いです!

+1

文字列の最後にマッチを結びつけるために '$'を使います。 –

答えて

0

google\.com$を使用してください。 $文字は、行の終わりと一致します。ここで

Pattern p = Pattern.compile("google\\.com$");//I want to know the right format 

String input2 = "mail.google.com.co.uk"; 

Matcher m2 = p.matcher(input2); 


boolean found2 = m2.find(); 
System.out.println(found2); 

出力= false

2

あなたのパターンはgoogle\.com$である必要があります。 $文字は、行の終わりと一致します。詳細はregex boundary matchersを参照してください。

+0

ありがとう!できます! – Xris

1
Pattern p = Pattern.compile("google\.com$"); 

ドル記号は、テストする行/文字列の最後にある必要があることを示します。あなたのドットも任意の文字にマッチするので、ドットだけにマッチさせたい場合は、それをエスケープする必要があります。

+0

@downvoter、あなたがそうした理由についてコメントしてください。 – Madbreaks

2

は、非マッチング部分と一致して取得する方法です。文字列
(.*)の試合の始まり - -

ここ

great regular expression tool

^(.*)google\.com$

^へのインタラクティブ・リンクとして生の正規表現パターンであるアップ次の試合
Googleにグループ内のすべてをキャプチャ - \. - .と一致するリテラルは\でエスケープする必要があります com - マッチがリテラル
$をcomポート -

注文字列の末尾に一致します。文字列内のJavaで\リテラルも同様にエスケープする必要があります! ^(.*)google\\.com$

関連する問題