我需要帮助编写正则表达式来使用XSLT删除单词。
我需要从
更改XML文件的“detailpath”的输出/活动/二万六千二百零七分之二百六十二
......简单地说:
26207分之262
XSL是:
<xsl:value-of select="detailpath"/>
如何删除“/ events /”?
提前致谢。
答案 0 :(得分:3)
正则表达式模式只是'/events/'
您可以在XSLT 2.0 replace()函数调用中使用它:
<xsl:value-of select="replace(detailpath,'/events/','')"/>
函数返回xs:string 通过更换每个获得 $ input的非重叠子字符串 与给定的$ pattern匹配 $ replacement的发生 字符串。
您可以选择指定flags
fn:replace( $input as xs:string?, $pattern as xs:string, $replacement as xs:string) as xs:string fn:replace( $input as xs:string?, $pattern as xs:string, $replacement as xs:string, $flags as xs:string) as xs:string
答案 1 :(得分:2)
请注意,对于您的示例(起始字符串),您可以使用此XPath 1.0表达式:
substring(detailpath, 9 * starts-with(detailpath,'/events/'))
答案 2 :(得分:0)
另一个XPath 1.0解决方案(假设只有一个要替换的字符串实例)无论文本片段在字符串中的位置都可以使用:
<xsl:value-of select="concat(substring-before(detailpath,'/events/'),
substring-after(detailpath,'/events/'))" />
答案 3 :(得分:-1)
echo / events / 262/26207 | sed -e's | / events / || g'
这适用于Solaris上的bash,据我所知,经过调整后,应该可以在PHP,Javascript和Perl中使用。