java - 用于查找特定文件的正则表达式

标签 java regex

我想将文件名匹配为 "abc (1).xyz""abc (2).xyz""abc (3).xyz" 等,其中 abcxyz (扩展名)是固定的。此外,空格+(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/

相关文章:

java - @Inject 在 HK2 管理的 MethodInterceptor 中不起作用

regex - 匹配特定长度 x 或 y

php - 我可以使用什么正则表达式来验证 0 到 255 之间的数字?

java - 为邪恶的刽子手程序存储数据

java - 多种方法或一种(但很长)方法

java - 如何将变量从构造函数传递到方法?

从R中的字符串中删除表情符号

java - DOM XML - 如何获取子节点?

php - preg_match 在搜索转义引号时返回 null

regex - 使用正则表达式Dart/Flutter提取数据