我在Obsidian_to_Anki插件中使用Obsidian(使用ECMASRIPT),我有这样的页面 struct :

# 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 ⤵下的所有## HeadingsText of Headings的RegExp.在这里应该起到某种switch 的作用.所有## HeadingsText 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 regex## headings and texts.我的问题是,这种方式只有前## headings and texts个匹配,而我找不到解决方案.

推荐答案

您可以使用:

(?<=^# .*⤵(?:\n(?!# ).*)*)\n(^## .*)\n(?!^##? )(.*(?:\n(?!^##? ).*)*)

模式与以下内容匹配:

  • (?<= Positive lookbehind, assert that to the left is
    • ^# .*⤵# 匹配,该行的其余部分在结束
    • (?:\n(?!# ).*)*可以 Select 匹配所有不是以1+#个字符和空格开头的行
    • \n匹配换行符
  • )闭上眼睛向后看
  • (^## .*)捕获group 1,匹配## ,然后是该行的其余部分
  • \n匹配换行符
  • (?!^##? )否定前视,断言该行不是以#或##和空格开头
  • ( Capture group 2
    • .*与整条线匹配
    • (?:\n(?!^##? ).*)*可以 Select 匹配所有不以#或##和空格开头的行
  • )收官小组2

Regex demo

Javascript相关问答推荐

如何确保滚动时响应式图像保持在文本图像布局中的顶部?

如何将特定的字符串类型转换为TypScript中的字符串?

即使设置了父级的最大高度,固定位置的分区内容也不会滚动?

如何使用JavaScript向html元素添加样式

如何解决(不忽略)reaction详尽的linter规则,而不会在获取数据时导致无限的reender循环

React对话框模式在用户单击预期按钮之前出现

为什么JavaScript双边字符串文字插值不是二次的?

我在这个黑暗模式按钮上做错了什么?

如何解决CORS政策的问题

react—router v6:路由没有路径

CheckBox作为Vue3中的一个组件

未定义引用错误:未定义&Quot;而不是&Quot;ReferenceError:在初始化&Quot;之前无法访问';a';

不能将空字符串传递给cy.containes()

如何使用JavaScript拆分带空格的单词

React.Development.js和未捕获的ReferenceError:未定义useState

按下单键和多值

在JS中动态创建对象,并将其追加到HTML表中

如何在Press上重新启动EXPO-AV视频?

有没有办法更改Chart.js 3.x.x中主要刻度的字体?

在GraphQL解析器中修改上下文值