0

要件:

ディレクトリの下でアンインストーラーと呼ばれるアプリケーションを見つける必要があります。そのディレクトリには、アンインストーラー(Linux OSの場合)、Uninstaller.exe(Windowsの場合)、Uninstaller.jar、およびUninstaller.laxなどのいくつかのファイル含まます

私は試した

final String pattern = "Uninstaller.*.(exe|[^lax]|[^jar])";
final FileFilter filter = new RegexFileFilter(pattern);
files = installDir.listFiles(filter);

Linux の場合は Uninstaller.lax が返されます。

問題を克服するのを手伝ってください。

4

4 に答える 4

2

私の理解が正しければbin、、、、jarまたはlax. その場合、これを使用します。

"Uninstaller\.(bin|jar|lax)"

編集

ああ、その場合は、次のように一致させることができます:

"^Uninstaller(\.exe)?$"
于 2013-05-31T09:39:26.027 に答える
0

これを行う場合:

[^lax]

文字クラス (l、a、x 以外の任意の文字に一致するトークン) を定義します。

だからこのトークン

(exe|[^lax]|[^jar])

意味

'exe に一致 OR l/a/x 以外の任意の文字に一致 OR j/a/r 以外の任意の文字に一致'

明らかにこれはあなたが望むものではありません:)

と のみを一致させたいUninstallerとしUninstaller.exeます。だから試してみてください

Uninstaller(\.exe)?$

($ は、文字列が終了する必要があることを意味します)

この場合、一致させたくないことすべてを明示的に言う必要はありません。実行することだけを指定します。

于 2013-05-31T09:43:39.487 に答える