正则表达式:删除最后一个下划线后的所有内容

问题描述

基于此 tei 示例,target='example.com#ktu1-1_ii_l13b-14_tmġyn' 我想删除 # 之前(包括_ 和之后(包括)最后一个 : 的所有内容,前两个下划线必须替换为 <xsl:variable name="verb" select="replace(replace(tokenize (@target,'\s+')!substring-after(.,'#'),'_',':'),'.+:.+.:','')"/> 。我试过了:

gdb

但是当预期结果应该是 ktu1-1:ii:l13b-14 时,这给出了与预期结果 (tmġyn) 相反的结果。

提前,非常感谢您的帮助。

解决方法

我找到了,基于这个答案 regex to remove everything after the last dot in a file:[^:]*$。 所以它完美无缺:

<xsl:variable name="verb" select="replace(replace(tokenize (@target,'\s+')!substring-after(.,'#'),'_',':'),':[^:]*$','')"/>
,

使用 XSLT(2.0 或更高版本),您可以:

<xsl:value-of select="tokenize(substring-after(@target,'_')[position() lt last()]" separator=":"/>

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...