[英]How to use Or and Not java regex operatoers
需求:
我必须在一个目录下找到一个名为uninstaller的应用程序,该目录包含一些文件,如Uninstaller (包含linux操作系统) 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!
请帮我克服这个问题。
如果我理解正确,您希望匹配以bin
, jar
或lax
结尾的所有Unistaller文件。 在这种情况下,使用此:
"Uninstaller\.(bin|jar|lax)"
编辑 :
啊,在这种情况下,你可以匹配:
"^Uninstaller(\.exe)?$"
当你这样做:
[^lax]
您可以定义一个字符类 - 只要它不是l,a,x就匹配任何字符的标记。
所以这个令牌
(exe|[^lax]|[^jar])
手段
'匹配exe或匹配任何不是l / a / x的字符或匹配任何不是j / a / r的字符
显然这不是你想要的:)
您只想匹配Uninstaller
和Uninstaller.exe
。 所以试试吧
Uninstaller(\\.exe)?$
($表示字符串必须结束)
在这种情况下,您不必明确说出您不想匹配的所有内容,只需要您所做的事情。
如果你想要的只是Uninstaller
或Uninstaller.exe
,那么你可以使用:
final String pattern = "Uninstaller(\.exe|$)";
尝试正则表达式
final String pattern = "Uninstaller(\\.exe)?";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.