当compare-string无法匹配时,将其替换为新的

时间:2014-02-17 17:04:23

标签: regex xslt pattern-matching xslt-2.0

我使用以下代码解析一串文本并识别与正则表达式匹配的子字符串= 'AND facet_(.*?):\(("?.*?"?)\)'

<xsl:template name="facets">
                <xsl:param name="q" />
                <xsl:analyze-string select="$q" regex='AND facet_(.*?):\(("?.*?"?)\)'>
                        <xsl:matching-substring>
                        <xsl:choose>
                                <xsl:when test="regex-group(1) = 'example1'">
                                    <facet name="domain"><xsl:value-of select="regex-group(2)" /></facet>
                                </xsl:when>
                                <xsl:when test="regex-group(1) = 'example2'">
                                    <facet name="content_type_norm"><xsl:value-of select="regex-group(2)" /></facet>
                                </xsl:when>
                                <xsl:when test="regex-group(1) = 'example2'">
                                    <facet name="sentiment"><xsl:value-of select="regex-group(2)" /></facet>
                                </xsl:when>
                        </xsl:choose>
                        </xsl:matching-substring>
                       <xsl:non-matching-substring></xsl:non-matching-substring>
                </xsl:analyze-string>
    </xsl:template>

如果正则表达式不匹配,我想用'AND NOT facet _(。?)替换它:((“?。?”?))'并保持相同的条件来自regex-group()。但是我不确定这如何适合当前的代码。

我尝试过类似的事情:

    <xsl:non-matching-substring>
     <xsl:value-of select="replace(., 'AND NOT facet_(.*?):\(("?.*?"?)\)')>
    </xsl:non-matching-substring>

但它似乎没有用。你能帮忙吗?

0 个答案:

没有答案