我在我使用的Obsidian-to-Anki插件工具中有以下正则表达式,取自他们的Wiki:
^Q: ((?:.+\n)*)\n*A: (.+(?:\n(?:^.{1,3}$|^.{4}(?<!<!--).*))*)
字符串
Source:Question answer style · Pseudonium/Obsidian_to_Anki Wiki https://github.com/Pseudonium/Obsidian_to_Anki/wiki/Question-answer-style
目前,基于我对regex的有限知识,我是这样解释这个regex的:
- Question在新的一行以
Q:
开始,表示Question的开始。它从下一个位置开始捕获,直到看到答案的开始 - Answer在一个新的行上以
A:
开始-当它看到一个换行符或一个HTML注解时,它会停止捕获。
1.我真的不明白检查包含^.{1,3}$
的行-我不明白这是在做什么。
因此,根据以下注解,它与问题和答案正确匹配。
但是,我想对这个正则表达式做两个修改:
1.我希望在问题和答案中都允许空行-我经常在问题和答案中放入代码。当代码中出现空行时,问题或答案将被截断
1.每个问答部分总是以新行---
结束。我想把答案一直捕捉到这一行。
下面是我在regex 101站点上进行的实验。我得到了一些工作的问题提取,但对于答案,我不能使它的工作,因为这部分对我来说太复杂了-任何帮助将不胜感激。https://regex101.com/r/s15yb9/1的
这里是我的笔记摘录-前两个问题已经在Anki中,因此它们有一个ID。最后一个问题是新的。
问:null和undefined有什么区别?
A:Null表示故意的空值。
- Undefined表示完全没有值。这发生在只有变量被声明而没有任何初始化器的情况下。对象中缺少的键也是未定义的。
export function ticketStatus(tickets, ticketId) {
if (tickets[ticketId] === undefined) {
return 'unknown ticket id';
} else if (tickets[ticketId] === null) {
return 'not sold';
} else {
return `sold to ${tickets[ticketId]}`;
}
}
型
Q:重写以使用JS Object.assign
visitor.ticketId = null;
return visitor;
型
A:只传递我们想要覆盖的props来赋值
return Object.assign(visitor, {ticketId: null});
型
问:isNaN()global与Number之间的差异。isNaN()?
A:global isNaN()执行类型转换。
- 由于我试图测试字符串是否包含有效的数字,因此这是正确的选择。
- 如果输入已经是一个数字,那么Number.isNaN()可能更好。作为
1条答案
按热度按时间ruoxqz4g1#
我正在使用Neuracache闪存卡风格,我遇到了同样的问题:
我想出了这个,也许有人能找到更好的办法来做:
字符串
空行是允许的,我认为有一些小的警告,希望这有助于修改其他风格
import python
Empty lines allowed only within the tags ``` in answer
型
每个问题都应该以
<!---->
开头,后跟一个换行符:型
两个捕获组组1和组2匹配答案和问题。
#flashcard
后允许有零个或一个空格