使用XSLT regex analyze-string匹配和分组字符串

时间:2012-04-12 18:14:09

标签: xml xslt xpath

我正在利用XSLT 2.0来查找基于正则表达式的匹配子字符串

我的XSLT功能如下所示

<xsl:function name="util:getSource">
    <xsl:variable name="dynamic" select="'Allergy Adverse Event Type 2.16.840.1.113883.3.88.12.3221.6.2'"/>
    <xsl:choose>
        <xsl:when test="string-length($dynamic) &gt; 1 and matches($dynamic,'[a-zA-Z\s]*')">
            <xsl:analyze-string select="$dynamic" regex="[a-zA-Z\s]*">
                <xsl:matching-substring>
                    <xsl:value-of select="."/>
                </xsl:matching-substring>
            </xsl:analyze-string>
        </xsl:when>
    </xsl:choose>
</xsl:function>

我想从输入字符串中找到“过敏不良事件类型” “'过敏不良事件类型2.16.840.1.113883.3.88.12.3221.6.2'”基于正则表达式 [a-zA-Z \ s] * ;当我执行上面的功能总是我收到“XTDE1150:正则表达式匹配空字符串”。正则表达式有什么问题;我可以就此提出建议。

1 个答案:

答案 0 :(得分:1)

来自spec

  

[ERR XTDE1150]如果有效,则是不可恢复的动态错误   regex属性的值是与a匹配的正则表达式   零长度字符串

只需将您的正则表达式更改为[a-zA-Z\s]+,您就可以了。