Java XML中的通配符文件匹配
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">
标记
<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