正则表达式从XSLT中删除单词

时间:2011-01-21 00:49:09

标签: regex xslt

我需要帮助编写正则表达式来使用XSLT删除单词。

我需要从

更改XML文件的“detailpath”的输出

/活动/二万六千二百零七分之二百六十二

......简单地说:

26207分之262

XSL是:

<xsl:value-of select="detailpath"/>

如何删除“/ events /”?

提前致谢。

4 个答案:

答案 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中使用。