我正在尝试以可用的方式从文本文件中提取一些数据,但是我无法完全找出正确的方法。原始文本文件如下所示:
<!-- @[Hero(super)] -->
# Creating new contexts
<!-- @[UsageExample] -->
## Usage example
```javascript
Import { ICON_NAME } from 'Icons'
```
<!-- @[/Hero] -->
<!-- @[ArticleSection] -->
我需要它给我一些如下所示的 JSON:
[
{
"name": "Hero",
"type": "super",
"h1" "Creating new contexts"
},
{
"name": "UsageExample",
"h2" "Usage example",
"codeType": "JavaScript",
"code": "Import { ICON_NAME } from 'Icons'",
"parent": "Hero"
}
]
我并不期待所有的帮助,更详细的细节就可以了。我正在努力解决的部分是弄清楚如何确定 <!-- @[Hero(super)] -->
之间的内容和<!-- @[/Hero] -->
tl;dr:我正在寻找一种方法来提取 <!-- @[Hero(super)] -->
之间的文本和<!-- @[/Hero] -->
最佳答案
您可以使用此正则表达式来捕获您在帖子中提到的每一个数据,使用它您可以创建您自己的 JSON,如您在帖子中提到的那样。
(?s)<!-- @\[(\w+)\((\w+)\)\] -->\s+# ([\w ]+?)\s+<!-- @\[(\w+)\] -->\s+## ([\w ]+?)\s+```(\w+)\s+(.*?)```\s+<!-- @\[\/(\w+)\] -->
上述正则表达式的命名组版本,
(?s)<!-- @\[(?<name>\w+)\((?<type>\w+)\)\] -->\s+# (?<h1>[\w ]+?)\s+<!-- @\[(?<name2>\w+)\] -->\s+## (?<h2>[\w ]+?)\s+```(?<codeType>\w+)\s+(?<code>.*?)```\s+<!-- @\[\/(?<parent>\w+)\] -->
这里有两个名称,并且组名称不能重复,因此第二个名称为 name2。
(?s) 这使点能够匹配新行,这将帮助您捕获多行数据
正则表达式的其余部分基本上将您想要的数据捕获到您可以在 regex101 演示中看到的各个组中。
演示,
https://regex101.com/r/VUkRiJ/2
https://regex101.com/r/VUkRiJ/3 (命名组版本)
关于javascript - 尝试从两组字符之间提取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53124433/