0

我正在编写一个 xsl:analyze-string 来查看日期。当我使用 Altova 处理器运行它时,我的 xslt 可以毫无问题地执行。但是,当我在 Saxon HE 9.5.1.2 处理器上运行相同的 xslt 时,xslt 失败,引用“正则表达式中字符 10 处的语法错误:不允许转义字符'/'”。如果不允许使用 \ 转义的正斜杠,是否有其他方法可以使用 Saxon 处理器转义字符?

<xsl:analyze-string select="/document/body//td[@class='date']/text()" regex="^(\d{{2}})(\/)(\d{{2}})(\/)(\d{{4}})$">

我将尝试:

<xsl:analyze-string select="/document/body//td[@class='date']/text()" regex="^(\d{{2}})(.)(\d{{2}})(.)(\d{{4}})$">  , but it seems like we should be able to use the normal escape.

感谢您的任何反馈。

4

2 回答 2

3

正斜杠不是正则表达式中的特殊字符(元字符),因此不需要转义。XSD/XPath 正则表达式方言与许多其他方言不同,不允许对字符进行转义,除非它们确实需要转义 - 原因是它有效地保留了这些转义序列以供将来使用。允许转义正斜杠的处理器是不合格的。

于 2014-08-12T14:30:09.153 回答
1

我认为斜线不需要转义,所以请尝试regex="^(\d{{2}})(/)(\d{{2}})(/)(\d{{4}})$"

于 2014-08-12T14:14:29.827 回答