模式匹配特定目录中可能嵌套在该目录中的文件

问题描述

我正在使用 reflections 库。

尝试在名为 MyPage 的目录中匹配 ID 为 demo页面,例如:

com/org/apps/demo/view/{any}/{number}/{of}/{dirs}/MyPage.xml
or
com/org/apps/demo/view/{dir}/MyPage.xml
or
com/org/apps/demo/view/MyPage.xml

这是我认为与路径匹配的模式:

reflections.getResources(Pattern.compile(".*demo.*MyPage.xml"))

但它返回 0 个结果。

反射初始化:

Reflections reflections =
        new Reflections(
            new ConfigurationBuilder()
                .setUrls(ClasspathHelper.forPackage("com.org"))
                .setScanners(new ResourcesScanner()));

String pageId = "MyPage";

Set<String> pages = reflections.getResources(Pattern.compile(".*demo.*MyPage.xml"))

pages 然后包含 0 个元素。

而如果我使用类似的东西。 (单通配符):

Set<String> pages = reflections.getResources(Pattern.compile(".*MyPage.xml"))

pages 然后按预期包含 1 个元素。

com/org/apps/demo/view/subdir/MyPage.xml

解决方法

你可以试试这个模式,以匹配完整路径:

^com/org/apps/demo/view/(?:[^/]+/)*MyPage[.]xml$