Regex 正则表达式XSLT,提取匹配
我正在使用XSLT2.0并尝试提取所需的caracterer正则表达式 我用tokenize()进行了尝试,但更令人费解Regex 正则表达式XSLT,提取匹配,regex,xslt,Regex,Xslt,我正在使用XSLT2.0并尝试提取所需的caracterer正则表达式 我用tokenize()进行了尝试,但更令人费解 <xsl:value-of select="tokenize('2.0-Cloverleaf-3d', '-')" /> 结果为:2.0,返回的结果为:3。字符串为(2.0-立体-*3*d) 我更喜欢这样做: <xsl:if test="matches(x:td/x:p, '.+3d$')"> true </xsl:if
<xsl:value-of select="tokenize('2.0-Cloverleaf-3d', '-')" />
结果为:2.0,返回的结果为:3。字符串为(2.0-立体-*3*d)
我更喜欢这样做:
<xsl:if test="matches(x:td/x:p, '.+3d$')">
true
</xsl:if>
真的
是否有任何函数可以在不需要“如果”的情况下获取所需的字符?。谢谢
编辑
我想我就这样离开吧
<xsl:variable name="places">
<xsl:if test="matches(x:td/x:p, '.+3d$')">3</xsl:if>
<xsl:if test="matches(x:td/x:p, '.+4d$')">4</xsl:if>
<xsl:if test="matches(x:td/x:p, '.+5d$')">5</xsl:if>
</xsl:variable>
3.
4.
5.
但是如果有更好的方法的话。谢谢。您可以使用“替换”,用您需要的零件替换所有部件 在XPath 2中:
replace(x:td/x:p, '^.*([0-9])d$', '$1')
在XSL中:
<xsl:value-of select="replace(x:td/x:p, '^.*([0-9])d$', '$1')" />
您可以使用“替换”,用所需的零件替换所有部件 在XPath 2中:
replace(x:td/x:p, '^.*([0-9])d$', '$1')
在XSL中:
<xsl:value-of select="replace(x:td/x:p, '^.*([0-9])d$', '$1')" />
您可以使用
tokenize()
执行此操作,但首先将令牌收集到变量中
<xsl:variable name="tokens" select="tokenize(x:td/x:p,'-')"/>
您可以使用
tokenize()
执行此操作,但首先将令牌收集到变量中
<xsl:variable name="tokens" select="tokenize(x:td/x:p,'-')"/>
您希望返回或获取什么字符?我想您只需要检查字符串是否以“3d”结尾,因为在2.0中我们还有一个函数,它是ends-with(),但它返回布尔值。如果你有固定的长度,你也可以使用substring()。我喜欢这样,以()结尾。谢谢。您想要返回或获得什么角色?我想您只需要检查字符串是否以“3d”结尾,因为在2.0中我们还有一个函数,它是ends-with(),但它返回布尔值。如果你有固定的长度,你也可以使用substring()。我喜欢这样,以()结尾。谢谢,这正是我需要的。谢谢:-)。这正是我需要的。谢谢:-)。