Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何处理正则表达式的不同方言(java与xsd)?_Java_Regex_Xsd - Fatal编程技术网

如何处理正则表达式的不同方言(java与xsd)?

如何处理正则表达式的不同方言(java与xsd)?,java,regex,xsd,Java,Regex,Xsd,当我尝试根据java()中的XSD验证XML文件时,XSD文件中给出的正则表达式与java中的正则表达式之间存在一些不兼容 如果XSD中存在类似于“[ab-]”的正则表达式(表示任何字符“a”、“b”或“-”),java会抱怨表达式中存在语法错误 这是自2005年3月28日以来的已知错误,请参阅 我能做些什么来解决这个错误?到目前为止,我试图通过将“[ab-]”替换为“[ab\-]”来“纠正”XSD文件,但有时这不是一个选项 如果您对这个bug也有问题,请在会议上投票支持它!因为已经有一个bu

当我尝试根据java()中的XSD验证XML文件时,XSD文件中给出的正则表达式与java中的正则表达式之间存在一些不兼容

如果XSD中存在类似于
“[ab-]”
的正则表达式(表示任何字符“a”、“b”或“-”),java会抱怨表达式中存在语法错误

这是自2005年3月28日以来的已知错误,请参阅

我能做些什么来解决这个错误?到目前为止,我试图通过将
“[ab-]”
替换为
“[ab\-]”
来“纠正”XSD文件,但有时这不是一个选项



如果您对这个bug也有问题,请在会议上投票支持它!

因为已经有一个bug被归档了,我建议您尝试不同的XML架构处理器。对此您没有什么可以做的


如果您可以预处理XSD所涉及的流,那么您可以创建一个解析器,该解析器可以理解基本的正则表达式结构,并且可以修复任何形式为[.*-]的内容(在本例中,.star不是文本)

虽然它可能不是世界上最好的解决方案,但是你可以考虑使用SAX解析器。我已经使用它超过3年了,但是我没有用它做过很多的正则表达式验证,所以我不能说它与此有关的健壮性。 除此之外,我认为Kaleb在预处理方面可能是正确的(这一点并不理想)——您可能可以使用一个正则表达式对任何传入的正则表达式进行替换……尽管这很有代码味道

编辑:
我又想到了一个问题,如果正则表达式不需要在xsd中,也就是说,它存在只是因为这是“最简单的”过去,您可以在xsd之外进行正则表达式验证。但是,如果其他系统使用xsd,这可能不是正确的解决方案,您可以忘记我说过的任何话。

说到点子上:您因此想要一个解析器来转换正则表达式模式吗?:)我至少对特定的错误进行了改进,这看起来确实很烦人。希望他们能早点修好。正则表达式转换器是一个选择。我只是在寻找最好的解决办法。