Skip to content

2.3.3: 分类下条目数量标注;#标签、嵌套标签支持正则表达式

Compare
Choose a tag to compare
@MuiseDestiny MuiseDestiny released this 02 Mar 11:25
· 125 commits to master since this release
  • 分类数量标注
  • #标签排序,0-9A-Z
  • #标签支持正则表达式

例如一个标签#AAA/BBB/CCC很长,只想显示CCC,可以用正则/^#(?:.+\/)*(.+)/,这个正则不仅用于#标签的原始标签->正则匹配的标签的映射,还作为嵌套标签的验证,属于高级用法,详见下面getTagMatch函数;

这个正则表达式应用于String.match函数,需要把需要提取的字符串用括号括起来(详见getTagMatch函数)。

如果你不会正则表达式,但有高级需求,请在讨论中提问

image

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("")) || ""
}