0%

obsidian to anki 使用

导入 anki 确实是个问题,一是资料整理问题,二是 markdown 格式在 anki 里的显示问题。看了这篇的介绍与 Anki 联动的最佳实践? ,觉得不错。
目前 obsidian 本身有个间隔重复的插件,obsidian-spaced-repetition ,可能后面会用到,但是觉得多端同步是个问题,还是导入 anki 比较好。

obsidian to anki 使用

  1. 正则表达式的区别,obsidian to anki 插件中的正则表达式是用来干啥的?
  2. obsidian 插件运行后导入了 anki,但是默认是扫描全部,默认也是会在相应的笔记里末尾生成一个 anki 的 id,这个 id 是用来做更新的,如果你删除了这个 id,目前来看就不能更新了。

obsidian 更新反应到 anki

理论上你在 obsidian 里更新了笔记,然后再次运行插件,会更新到 anki 里,但是我发现有时候更新不了,可能是我操作问题,但是我发现删除了 id 后就不能更新了,这个是个问题。

着重讲下这个 id,对于给予自定义的正则规则表达式可能效果不同,因为我用的这个正则 /^#+(.+)\n*((?:\n(?:^[^\n#].{0,2}$|^[^\n#].{3}(?<!<!--).*))+) \n?(?:<!--)?(?:ID: (\d+).*)/gm ,这个正则是用来匹配标题和内容的,但是我发现有时候匹配不到,重点来了,这个要求 id 前一行的末尾有个空格不然匹配不到,调试了源码也算是一整天感觉,还以为是个 bug,原来不是。

正则匹配不到的情形:

  1. id 前一行没有空格
  2. 如果没有 id 的情况下,最后一行的结尾也需要有一个空格
  3. 表格结尾的情况下,需要有一个空行而不是空格。可以用一个注释语句来表示一个空行,因为目前使用的正则还不能直接在内容内部使用空行,它会识别成新的 card,为了避免只能保持一个题的内容是一块没有空行的部分。<!-- 表格结束 这里放置是因为表格需要空行才能匹配正则,不然无法正确显示表格--> \n <!-- 表格结束 -->

下面详细展示这个匹配过程:

let string = `## 正しい答えは一つだけです。二人だけで行きます。大きい部屋は一階にだけあります。彼だけ来ていません。わたしは聞くだけです。![[Pasted image 20240401211927.png]]
副助词「だけ」表示限定
正しい答えは一つだけです。
动词汇总:
<!--ID: 1711974913743-->`;

// pattern = '/^#+(.+)\n*((?:\n(?:^[^\n#].{0,2}$|^[^\n#].{3}(?<!<!--).*))+) /gm';
// 尤其注意这个 pattern 两边不要有引号,不然会匹配不成功,这个也搞了我好久哈
pattern = /^#+(.+)\n*((?:\n(?:^[^\n#].{0,2}$|^[^\n#].{3}(?<!<!--).*))+) \n?(?:<!--)?(?:ID: (\d+).*)/gm;

let matches = string.matchAll(pattern);

for (let match of matches) {
console.info("sss ", match,);
}

输出结果如下:

sss  (4) ['## 正しい答えは一つだけです。二人だけで行きます。大きい部屋は一階にだけあります。彼だけ来ていま…限定
正しい答えは一つだけです。
动词汇总:
<!--ID: 17119713743-->', ' 正しい答えは一つだけです。二人だけで行きます。大きい部屋は一階にだけあります。彼だけ来ていません。わたしは聞くだけです。![[Pasted image 20240401211927.png]]', '
副助词「だけ」表示限定
正しい答えは一つだけです。
动词汇总:', '17119713743', index: 0, input: '## 正しい答えは一つだけです。二人だけで行きます。大きい部屋は一階にだけあります。彼だけ…正しい答えは一つだけです。
动词汇总:
<!--ID: 17119713743-->', groups: undefined]