我有以下的XML:
<t>a_35345_0_234_345_666_888</t>
我希望将“_”后的第一个出现的数字替换为固定数字234。结果应如下所示:
<t>a_234_0_234_345_666_888</t>
我尝试使用以下代码,但它没有起作用:
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xsl:template match="/">
<xsl:value-of select='replace(., "(.*)_\d+_(.*)", "$1_234_$2")'/>
</xsl:template>
</xsl:stylesheet>
更新
以下方法适用于我(感谢@Chris85)。只需删除下划线并添加“?”以使其非贪婪。
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xsl:template match="/">
<xsl:value-of select='replace(., "(.*?)_\d+(.*)", "$1_234$2")'/>
</xsl:template>
</xsl:stylesheet>
.*?
。例如:<xsl:value-of select='replace(., "(.*?)_\d+_(.*)", "$1_234_$2")'/>
。 - chris85_
对你来说似乎不起作用。 - chris85