2009-08-24 10 views
1

私は、ファイルの拡張子と一致するようにJavaのString.matches(正規表現)メソッドの正規表現を作成しようとしています。私は試しました。*。extしかし、これはextで終わるファイルと一致しません。 私は.*\.extを試しました。これは正規表現テスターで動作しましたが、Eclipseでは無効なエスケープシーケンスエラーが発生しています。 誰も私にこれを手伝ってもらえますか? Eclipseで おかげJava regex help

答えて

2

(Javaは)、正規表現文字列は「エスケープ」する必要があります

".*\\.ext" 
+0

おかげで、完全に働きました。 –

+0

あなたの答えは(これは基準です)助けとなりました。簡単に疲れた私たちの方々にとってはより簡潔ですので、ちょっと後で+1してください:-) – paxdiablo

0

は、ゼロまたはそれ以上の非ドットと、文字列の末尾に続くドットにマッチ:

\.[^.]*$ 
それはJavaの文字列リテラルだ場合、あなたはバックスラッシュをエスケープする必要があること

注:

Pattern p = Pattern.compile("\\.[^.]*$"); 
2

そのような単純なシナリオでは、String.endsWithを使ってみませんか?

+0

私はそれについても考えませんでした。 –

+0

良い提案。 +1 – VonC

4

はここであなたに使用する正規表現を示したテストプログラムです:

public class Demo { 
    public static void main(String[] args) { 
     String re = "^.*\\.ext$"; 
     String [] strings = new String[] { 
      "file.ext", ".ext", 
      "file.text", "file.ext2", 
      "ext" 
     }; 
     for (String str : strings) { 
      System.out.println (str + " matches('" + re + "') is " + 
       (str.matches (re) ? "true" : "false")); 
     } 
    } 
} 

、ここでは、出力(わずかに「美」のために編集)です:

file.ext matches('^.*\.ext$') is true 
.ext  matches('^.*\.ext$') is true 
file.text matches('^.*\.ext$') is false 
file.ext2 matches('^.*\.ext$') is false 
ext  matches('^.*\.ext$') is false 

しかし、あなたが本当に必要はありません。それは簡単です

str.endsWith (".ext") 

この特定の仕事の場合も同様です。

あなたは比較はWindows用(...、.EXT、.EXT)大文字と小文字を区別する必要がある場合は、あなたが使用することができます。

str.toLowerCase().endsWith(".ext") 
+0

私の答えよりもはるかに詳細。 +1 – VonC