XSLT 2.0使用哪个dialect的Regex,例如<xsl:analyze-string...>
?更具体地说,撒克逊9.0。
或更重要的是:我不熟练使用正则表达式,并希望使用正则表达式工具来开发我的XSLT 2.0正则表达式。但了解正则表达式的方言是先决条件。
例如,在这个online regex tester,我猜想XSLT 2.0正则表达式方言将等同于Java或Perl。
更新
在下面的回复中,我做了更有针对性的谷歌搜索:
这些函数使用的正则表达式语法在 XML Schema中指定的正则表达式语法的术语(请参阅 [XML Schema第2部分:数据类型第二版]),而后者又基于此 已建立的语言惯例,例如 Perl 。然而, 因为XML Schema仅将正则表达式用于有效性 检查,它省略了一些广泛使用语言的设施 比如Perl。因此,本节描述了XML的扩展 用于恢复这些功能的模式正则表达式语法。
<analyze-string>
描述了正则表达式的增强功能。对于比使用这些更复杂的字符串处理 函数,XSLT提供了一个指令
<analyze-string>
在本节中定义。
<analyze-string>
net.sf.saxon.java,模块JDK14RegexTranslator和JDK15RegexTranslator,以及net.sf.saxon.dotnet,模块DotNetRegexTranslator
UPDATE 9/14/14 看起来未来的Saxons将拥有来自重新设计的雅加达代码的自定义正则表达式引擎。 Interesting Read from Michael Kay
答案 0 :(得分:2)
XSLT和XPath 2.0中的正则表达式语言构建在the W3C schema specification中定义的语言上,并按照http://www.w3.org/TR/xquery-operators/#regex-syntax中的描述进行扩展。
此外the regex
attribute of xsl:analyze-string
is an attribute value template所以你需要注意
因为regex属性是属性值模板,所以卷曲 正则表达式中的括号必须加倍。例如, 要匹配一到五个字符的序列,请写入regex =“。{{1,5}}”。 对于包含许多大括号的正则表达式,它可能更多 方便使用的符号如 regex =“{'[0-9] {1,5} [a-z] {3} [0-9] {1,2}'}”,或使用变量。