我使用以下代码解析一串文本并识别与正则表达式匹配的子字符串= '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>
但它似乎没有用。你能帮忙吗?