如何处理正则表达式的不同方言(java与xsd)?
当我尝试根据java()中的XSD验证XML文件时,XSD文件中给出的正则表达式与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
“[ab-]”
的正则表达式(表示任何字符“a”、“b”或“-”),java会抱怨表达式中存在语法错误
这是自2005年3月28日以来的已知错误,请参阅
我能做些什么来解决这个错误?到目前为止,我试图通过将“[ab-]”
替换为“[ab\-]”
来“纠正”XSD文件,但有时这不是一个选项
如果您对这个bug也有问题,请在会议上投票支持它!因为已经有一个bug被归档了,我建议您尝试不同的XML架构处理器。对此您没有什么可以做的
如果您可以预处理XSD所涉及的流,那么您可以创建一个解析器,该解析器可以理解基本的正则表达式结构,并且可以修复任何形式为[.*-]的内容(在本例中,.star不是文本) 虽然它可能不是世界上最好的解决方案,但是你可以考虑使用SAX解析器。我已经使用它超过3年了,但是我没有用它做过很多的正则表达式验证,所以我不能说它与此有关的健壮性。 除此之外,我认为Kaleb在预处理方面可能是正确的(这一点并不理想)——您可能可以使用一个正则表达式对任何传入的正则表达式进行替换……尽管这很有代码味道 编辑:
我又想到了一个问题,如果正则表达式不需要在xsd中,也就是说,它存在只是因为这是“最简单的”过去,您可以在xsd之外进行正则表达式验证。但是,如果其他系统使用xsd,这可能不是正确的解决方案,您可以忘记我说过的任何话。说到点子上:您因此想要一个解析器来转换正则表达式模式吗?:)我至少对特定的错误进行了改进,这看起来确实很烦人。希望他们能早点修好。正则表达式转换器是一个选择。我只是在寻找最好的解决办法。