簡體   English   中英

如何使用或不使用java正則表達式操作符

[英]How to use Or and Not java regex operatoers

需求:

我必須在一個目錄下找到一個名為uninstaller的應用程序,該目錄包含一些文件,如Uninstaller (包含linux操作系統) Uninstaller.exe (如果是windows), Uninstaller.jarUninstaller.lax

我試過了

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

但它在Linux的情況下返回Uninstaller.lax!

請幫我克服這個問題。

如果我理解正確,您希望匹配以binjarlax結尾的所有Unistaller文件。 在這種情況下,使用此:

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

編輯

啊,在這種情況下,你可以匹配:

"^Uninstaller(\.exe)?$"

當你這樣做:

[^lax]

您可以定義一個字符類 - 只要它不是l,a,x就匹配任何字符的標記。

所以這個令牌

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

手段

'匹配exe或匹配任何不是l / a / x的字符或匹配任何不是j / a / r的字符

顯然這不是你想要的:)

您只想匹配UninstallerUninstaller.exe 所以試試吧

Uninstaller(\\.exe)?$

($表示字符串必須結束)

在這種情況下,您不必明確說出您不想匹配的所有內容,只需要您所做的事情。

如果你想要的只是UninstallerUninstaller.exe ,那么你可以使用:

final String pattern = "Uninstaller(\.exe|$)";

嘗試正則表達式

final String pattern = "Uninstaller(\\.exe)?";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM