在Saxon 9中他使用Java XML解析器,无法识别正则表达式中的单词边界(\ b)

我有以下简单的正则表达式:

\b\w+\b 

Saxon报告以下错误:

 syntax error at char 2 in regular expression: Escape character 'b' not allowed 

这是否意味着我不能在Java Saxon解析器中使用单词边界? 是否有另一种具有此function的免费XML Java解析器?

XSD和XPath中使用的正则表达式方言不识别\ b(无论是作为单词边界还是作为退格键)。 我认为排除它的原因可能是错误的焦虑,即单词边界是语言/文化依赖的,尽管这是不合逻辑的,因为方言确实支持\ w(单词字符),而单词边界可以简单地定义为a之间的边界。匹配\ w的字符和不匹配的字符。 或者,XSD团队可能一直担心零长度匹配会产生歧义,这是一个臭名昭着的臭虫来源,并且很难严格指定正则表达式的确切含义。

所以这不是撒克逊人的限制,而是写入XPath规范的限制。

如果你不太关心标准的一致性,撒克逊允许你把“!” 在“flags”参数的末尾,表示您的正则表达式是Java正则表达式而不是XPath正则表达式。