Java XML中的通配符文件匹配

Java XML中的通配符文件匹配,java,regex,xml,xsd,glob,Java,Regex,Xml,Xsd,Glob,XML文件包含标记 <Wildcard>r_prior*.obj</Wildcard> r_prior*.obj 我想访问名为r_prior[0-9]的文件。obj,可以有一个文件r_prior_dummy.obj(我不需要),但在当前代码中,它也需要r_ram_dummy.obj 的架构代码: <simpleType name="Wildcard"> <restriction base="string">

XML文件包含
标记

       <Wildcard>r_prior*.obj</Wildcard>
r_prior*.obj
我想访问名为r_prior[0-9]的文件。obj,可以有一个文件r_prior_dummy.obj(我不需要),但在当前代码中,它也需要r_ram_dummy.obj

的架构代码:

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

我尝试将
r\u置于[0-9]之前。obj
,但它不起作用

我该怎么做?

也许你需要逃跑”


参见此处的工作示例:

此处似乎有两种独立的模式匹配类型:

  • 正则表达式:XML模式在
    xs:pattern
    中使用的内容。比文件全球化更具表现力;使用
    *
    匹配零个或多个 前导字符
    可选择匹配前面的字符; 还有更多的匹配结构
  • 文件globbing:哪些库通常用于筛选文件列表。通常没有正则表达式那么有表现力;使用
    *
    匹配任何字符<代码>?以精确匹配一个未知字符 (在某些情况下包括0个未知字符);等等

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

不确定您想要什么、尝试了什么以及得到了什么错误或错误的输出。这看起来很好(值
r\u previor[0-9]。obj
与正则表达式匹配
[^\\/]+
)我想选择符合通配符条件的文件,并在最后将其放入zip存档,但使用“r\u previor[0-9]。obj”不起作用。只是想弄清楚,你的目标是什么?要为
通配符
元素定义有效值,或为某些应用程序将解释为匹配某些文件的
通配符
元素指定值?@kjhughes“要为某些应用程序将解释为匹配某些文件的通配符元素指定值?”->我有一个应用程序,为了从工具中选择一个复选框,在后台运行这个xml文件(具有通配符),我有一个Java代码,它迭代选定目录中的所有文件,并将匹配通配符的文件复制到归档文件。现在,我想复制r_prior1.obj,r_prior2.obj,r_prior3.obj。。。等等但不是r_previor_dummy.obj。我收到了这个错误“元素‘通配符’的值‘r_previor[0-9]\.obj’无效。”斜杠可能有问题,我们需要更改模式中的模式吗?请尝试r_previor[0-9][.]obj以获取答案。Java源代码使用Apache commons io库中的WildcardFileFilter来处理通配符,API说“此过滤器基于一个或多个通配符选择文件和目录,通配符匹配器使用字符“?”和“*”来表示单个或多个通配符。”有什么方法可以同时使用字符来满足我的要求吗?因此不直接支持
[0-9]
。除了更改Java代码之外,也许可以使用
r\u-prior[0-9]代替。obj
可以使用
r\u-prior?.obj
。尽管这将匹配
r\u prior
之后的任何单个字符,而不仅仅是数字,但它至少会根据需要排除
r\u ram\u dummy.obj
r_prior[0-9][.]obj