我一直在使用以下代码将正则表达式'\s*AND\s*NOT\s*scope:\("TEXT"\)'
替换为特定字符串,仅当匹配未发生时(non-matching-substring
):
<xsl:template name="strip-scopes">
<xsl:param name="q" />
<xsl:analyze-string select="$q" regex='\s*AND\s*NOT\s*scope:\("TEXT"\)'>
<xsl:matching-substring></xsl:matching-substring>
<xsl:non-matching-substring>
<xsl:value-of select="replace(replace(.,'AND \(scope:.*?\)',''), 'AND facet_.*?:\(.*?\)', '')"/>
</xsl:non-matching-substring>
</xsl:analyze-string>
</xsl:template>
它工作正常,但我现在需要在<xsl:non-matching-string
&gt;中包含另一个条件。是否可以在元素中包含OR条件,以便允许'AND facet_.*?:\(.*?\)'
和'AND NOT facet_.*?:\(.*?\)'
替换?
答案 0 :(得分:1)
您可以使用replace(., 'foo|bar', 'whatever')
将foo
和/或bar
子字符串替换为whatever
。 replace
的第二个参数是正则表达式,因此|
允许替代。