问题描述
我正在使用 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$