我使用Obsidian(使用ECMAScript)与Obsidian_to_Anki-插件,我有这样的页面结构:
# Heading 1 ⤵
## Heading 1.1
Text of Heading 1.1
Text can span over multiple lines
Even more text
## Heading 1.2
Text of Heading 1.2
# Heading 2
## Heading 2.1
Text of Heading 2.1
## Heading 2.2
Text of Heading 2.2
# Heading 3 ⤵
## Heading 3.1
Text of Heading 3.1
## Heading 3.2
Text of Heading 3.2
# Heading 4
我需要一个匹配嵌套在# Heading ⤵
下的所有## Headings
和Text of Headings
的RegExp。⤵
在这里应该起到一种开关的作用。所有## Headings
和Text of headings
都应与捕获组匹配。因此,嵌套在# Heading
下而没有⤵
的内容不应匹配。因此,匹配的文本应为:
## Heading 1.1
Text of Heading 1.1
More text
Even more text
## Heading 1.2
Text of Heading 1.2
## Heading 3.1
Text of Heading 3.1
## Heading 3.2
Text of Heading 3.2
Here's what I came up with regex101。我的问题是,这种方法只匹配了第一个## headings and texts
,我找不到解决方案。
1条答案
按热度按时间kt06eoxx1#
您可以使用:用途:
模式匹配:
(?<=
正向后看,Assert左边是^# .*⤵
匹配#
和以⤵
结尾的行的其余部分(?:\n(?!# ).*)*
可选匹配所有不以1+#
字符和空格开头的行\n
匹配换行符)
关闭lookbehind(^## .*)
捕获组1,匹配##
,然后是该行的其余部分\n
匹配换行符(?!^##? )
负先行,Assert该行不以#或##和空格开头(
捕获组2.*
整行匹配(?:\n(?!^##? ).*)*
可选匹配所有不以#或##开头的行和空格)
关闭组2Regex demo