XML 中的通配符文件匹配

Wildcard file matching in XML

XML 文件包含 <Wildcard> 标签,

       <Wildcard>r_prior*.obj</Wildcard>

我想访问名称为 r_prior[0-9].obj 的文件,可以有一个文件 r_prior_dummy.obj(我不需要),但是使用当前代码它正在使用 r_ram_dummy.obj还有。

<Wildcard> 的架构代码:

    <simpleType name="Wildcard">
      <restriction base="string">
        <pattern value="[^\/]+"></pattern>
      </restriction>
    </simpleType>

我试过 <Wildcard>r_prior[0-9].obj</Wildcard>,但没用。

我应该怎么做?

也许你需要转义“.”

r_prior[0-9][.]obj

在此处查看工作示例:RegexR

这里似乎有两种独立类型的模式匹配:

  • 正则表达式:XML 架构在 xs:pattern 中使用的内容。比文件通配更具表现力;使用 * 匹配零个或多个 前导字符; ? 可选匹配前面的字符; 以及更多匹配结构。
  • 文件通配:图书馆经常使用什么来过滤文件列表。通常比正则表达式表现力差;使用 * 匹配任何字符; ? 匹配一个未知字符 (在某些情况下包括 0 个未知字符);等等

假设您只能更改 XML 文件,您需要检查 Java 应用程序以查看它支持哪种类型的文件 globbing 构造。 (如果您有源代码,请查看正在调用什么来过滤文件列表并检查其文档。)您可以假设支持 *。例如,您不能假定支持 [characters]