2016-06-24 3 views
5

".req.copied"拡張子で終わるリスト内のすべてのファイル名を識別するための簡単な正規表現を作成しようとしています。私が使用しているコードは以下の通りですJavaのファイル拡張子の正規表現

public class Regextest { 
public static void main(String[] args) { 
    // TODO Auto-generated method stub 
String test1=new String("abcd.req.copied"); 
    if(test1.matches("(req.copied)?")) { 
    System.out.println("Matches"); 
    } 
    else 
    System.out.println("Does not Match"); 
    } 

} 

正規表現はオンラインの正規表現テストでは大丈夫ですが、プログラムでは機能しません。私は複数の組み合わせ(reqの分割や2つの正規表現へのコピー、ドット文字のリテラルマッチングなど)を試みましたが、何も動作しませんでした。(最も簡単な(reg)正規表現?これに取り組む方法を教えてください。

+10

を使用する必要がありますようになるのはなぜだけではなく、 'string.endsWith( "req.copied。"); '? – resueman

+0

ディレクトリ内のファイルの中には、「.req.copied」(つまり「.req.copied.err」)の後ろに「.err」のようなカスタム拡張子があります。しかし、ya endsWithは問題の半分を解決します。ありがとうresueman。 – MohanVS

+1

'contains()'を使用することができます – sinclair

答えて

5

ここではmatchesの主な問題は、と一致する正規表現が必要であることです。文字列です。しかしあなたの場合、あなたの正規表現は部分としか書いていません。

あなたが本当にあなたのコードがより

test1.matches(".*\\.req\\.copied") 
  • .のようになります。ここでmatchesを使用したい場合は、(\rのような行区切りを除く)任意の文字を表しますので、あなたはそれを表現したい場合にのみ必要にドット\.のようにエスケープしてください(も特別な意味を持っていますので、"\\."と書く必要があります。\r\n\tなど)。
  • .*は正規表現が.req.copied

前に任意の文字を受け入れるしかし、あなたの場合には、あなたが単にendsWith方法

test1.endsWith(".req.copied") 
+0

ありがとうPshemo!私は文字の文字を表すためにドットの前にスラッシュを1つ使用していました。それは私の間違いでした。 – MohanVS

2

コメントでresuemanが言ったように、正規表現は必要ありません。それぞれのファイル名がendsWith(".req.copied")かどうかだけを確認することができます。

if(test1.endsWith(".req.copied")){ 
    System.out.println("Matches"); 
}else{ 
    System.out.println("Does not match"); 
} 

ところで、上記if-elseはSystem.out.println(test1.endsWith(".req.copied") ? "Matches" : "Does not match");に置き換えることができます。

+0

ドールカヤンありがとう! – MohanVS

1

test1.matches(".*\\.req\\.copied")あなたの場合、matchesの代わりにendsWith()を使用することを検討する必要があります。

+1

'\\。 'のように' .'をエスケープしてください。 – oldrinb

+0

おかげでsinclair!ありがとうoldrinb! – MohanVS

1

あなたは全体の文字列形式ではなく、スニペットマッチする正規表現を考え出す必要があります。また

String test1= "abcd.req.copied"; 

if(test1.matches("^.*req\\.copied$")) { 
    System.out.println("Matches"); 
} else { 
    System.out.println("Does not Match"); 
} 

を、あなたのフォーマットはどのような場合にマッチする(req.copied)?を、使用していました。また、.シンボルは任意の文字と一致しますので、ドットをマッチさせるためにエスケープしてください。

+0

ありがとうございました! – MohanVS

関連する問題