4

フォルダーをスキャンし、特定の正規表現パターンに一致するファイルをフィルター処理する必要があります。

FileNameFilter の accept メソッドのサンプル コード


Scanner fileNameScanner = new Scanner(fileName);

Pattern mainPattern = Pattern.compile(this.pattern);

fileNameScanner.findInLine(mainPattern);

MatchResult result = fileNameScanner.match();

ここで、impl-2.0.xml のような名前のファイルと一致するファイルをフィルタリングする正規表現が必要ですが、同時に impl-Test-2.0.xml と一致してはなりません。

いくつかの設定を試しましたが、うまくいかないようです。impl-Test-2.0.xml も選択します。

4

3 に答える 3

1

Regexrで実際の動作を確認してください:

^\w+-\d\.\d\.xml
于 2012-08-23T12:36:34.000 に答える
1

私は満足しています<one or more characters of any type>-<single digit>.<single digit>.xml

" characters of any type " は正規表現では危険なステートメントです! 任意の文字または数字に満足していると仮定して、これを制限した方がよいでしょう。その仮定に基づいて、次のことが必要です。

Pattern p = Pattern.compile("\\w+-\\d\\.\\d\\.xml");

これは、az、AZ、0-9 の範囲の文字と、それに続くハイフン、1 桁の数字、ピリオド、1 桁の数字、および.xml.

于 2012-08-23T12:34:13.567 に答える
0

EDIT after comment

サイズ数制限のある絶対パスの場合

Pattern.compile(".*impl-[0-9]{1,2}\\.[0-9]{1,2}.xml");

名前ファイルの場合:

Pattern.compile("impl-[0-9]+\\.[0-9]+.xml");

編集2

final Pattern patt = Pattern.compile("^\\p{Alnum}+\\-[0-9]+\\.[0-9]+.xml$");

コンソール

impl-3.0.xml
api-3.0.xml
x10-2.0.xml

^絶対パスをgrepする場合、Javaパスセパレーターに置き換えることができます

于 2012-08-23T11:54:42.237 に答える