正则表达式 – XSLT 2.0正则表达式替换
发布时间:2020-12-14 05:49:09 所属栏目:百科 来源:网络整理
导读:我有以下 XML: ta_35345_0_234_345_666_888/t 我想用固定数字234替换“_”之后的第一个数字.所以结果应如下所示: ta_234_0_234_345_666_888/t 我尝试使用以下但它不起作用: xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transfor
我有以下
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> UPDATE 以下适用于我(感谢@ 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> 解决方法
你的正则表达式是/贪婪的.*消耗所有内容直到下一个字符的最后一次出现.
所以
放了
进入1美元.然后888被删除,没有任何东西进入2美元. 为了使它非贪婪添加一个?之后 .*.这告诉*在第一次出现下一个字符时停止. 功能示例: <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(.,"$1_234$2")'/> </xsl:template> </xsl:stylesheet> 这里有一些关于重复和贪婪的文档,http://www.regular-expressions.info/repeat.html. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |