You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

XSLT 2.0正则tokenize分号问题:避免文献条目首字母被切割

解决Zotero文献引用字符串的Tokenize分割问题

你当前的正则表达式;\s[^\d]会匹配分号、空格以及后续的非数字字符,分割时会把这个非数字字符从下一个文献条目中移除,导致首字母丢失。

正确的正则表达式

使用正向否定先行断言实现只在分号后不是空格加数字的位置分割,且不消耗后续字符:

;\s(?!\d)

修改后的XSLT 2.0代码

<xsl:for-each select="tokenize(zotero,';\s(?!\d)')">
 <bibl><xsl:value-of select="."/></bibl>
</xsl:for-each>

输出结果

处理给定输入字符串后,将得到正确的文献条目:

<bibl>(Leppin 2019</bibl>
<bibl>Francisco 2011, 119</bibl>
<bibl>van Ginkel 2005, 43–44; 1995, 114–115; 126; 147; 166–67)</bibl>

原理说明

(?!\d)是正向否定先行断言,它仅验证分号+空格之后的字符不是数字,但不会匹配该字符。这样分割时只会拆分不同的文献条目,不会破坏条目的首字符,同时保留页码部分的分号。

内容的提问来源于stack exchange,提问作者wsalesky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 09:22:32