我想将文件名匹配为 "abc (1).xyz"
或 "abc (2).xyz"
或 "abc (3).xyz"
等,其中 abc
和 xyz
(扩展名)是固定的。此外,空格+(number)
部分是可选的,即abc.xyz
也是有效的。
我尝试了以下代码,但它没有返回成功响应:
String regex = "abc\\s([0-9])\\.xyz";
Pattern mather = Pattern.compile(regex);
if (mather.matcher(fileName).matches()) {
return true;
} else {
return false;
}
请提出任何解决方案。提前致谢。
最佳答案
您可以使用
String regex = "abc(?:\\s+\\([0-9]+\\))?\\.xyz";
它将匹配:
abc
-abc
(?:\\s+\\([0-9]+\\))?
- 可选序列:\\s+
- 1 个以上空白字符\\(
- 一个(
[0-9]+
- 1+ 位数字\\)
- 一个)
\\.xyz
-.xyz
子字符串。
由于您使用的是 Matcher#matches()
方法,因此需要整个字符串匹配(就好像整个模式包含在 ^
和 $
anchor 中,"^abc(?:\\s+\\([0-9]+\\))?\\.xyz$"
)。
关于java - 用于查找特定文件的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47650934/