Regex 当正则表达式为变量时,分析字符串不匹配
下面的代码按预期工作,当文本中出现Internet时,它将得到匹配Regex 当正则表达式为变量时,分析字符串不匹配,regex,xslt,xslt-2.0,Regex,Xslt,Xslt 2.0,下面的代码按预期工作,当文本中出现Internet时,它将得到匹配 <xsl:template name="IndexTerm"> <xsl:param name="matchedRegex"> <xsl:text>(.*)(Internet)(.*)</xsl:text> </xsl:param> <xsl:param name="text"></xsl:param>
<xsl:template name="IndexTerm">
<xsl:param name="matchedRegex">
<xsl:text>(.*)(Internet)(.*)</xsl:text>
</xsl:param>
<xsl:param name="text"></xsl:param>
<xsl:analyze-string select="$text" regex="(.*)(Internet)(.*)" flags="m">
<xsl:matching-substring>
<xsl:call-template name="IndexTerm">
<xsl:with-param name="text">
<xsl:value-of select="regex-group(1)"></xsl:value-of>
</xsl:with-param>
</xsl:call-template>
<xsl:element name="a">
<xsl:attribute name="id">
<xsl:value-of select="generate-id($text)"></xsl:value-of>
</xsl:attribute>
<xsl:value-of select="regex-group(2)"></xsl:value-of>
</xsl:element>
<xsl:value-of select="regex-group(3)"></xsl:value-of>
</xsl:matching-substring>
<xsl:non-matching-substring>
<xsl:value-of select="."></xsl:value-of>
</xsl:non-matching-substring>
</xsl:analyze-string>
</xsl:template>
(**)(互联网)(**)
当线路:
<xsl:analyze-string select="$text" regex="(.*)(Internet)(.*)" flags="m">
替换为:
<xsl:analyze-string select="$text" regex="$matchedRegex" flags="m">
它不再匹配正则表达式。我确实需要把它作为一个参数传过来。是否还有其他方法可以做到这一点?使用属性值模板
regex="{$matchedRegex}"