- 分类数量标注
- #标签排序,0-9A-Z
- #标签支持正则表达式
例如一个标签#AAA/BBB/CCC
很长,只想显示CCC
,可以用正则/^#(?:.+\/)*(.+)/
,这个正则不仅用于#标签的原始标签->正则匹配的标签的映射,还作为嵌套标签的验证,属于高级用法,详见下面getTagMatch
函数;
这个正则表达式应用于String.match函数,需要把需要提取的字符串用括号括起来(详见getTagMatch
函数)。
如果你不会正则表达式,但有高级需求,请在讨论中提问
static getTagMatch(tag: string) {
const rawString = Zotero.Prefs.get(`${config.addonRef}.textTagsColumn.match`) as string
const res = rawString.match(/\/(.+)\/(\w*)/)
let regex: RegExp;
// 是正则表达式
if (res) {
regex = new RegExp(res[1], res[2])
}
// 不以xxx开头
else if (rawString.startsWith("~~")) {
regex = new RegExp(`^([^${rawString.slice(2)}].+)`)
}
// 以xxx开头
else {
regex = new RegExp(`^${rawString}(.+)`)
}
const arr = tag.match(regex)
return (arr && arr.slice(1).join("")) || ""
}