Javascript 试图从两组字符之间提取数据
我试图以一种可用的方式从文本文件中提取一些数据,但是我无法找到正确的方法。原始文本文件如下所示:Javascript 试图从两组字符之间提取数据,javascript,node.js,regex,Javascript,Node.js,Regex,我试图以一种可用的方式从文本文件中提取一些数据,但是我无法找到正确的方法。原始文本文件如下所示: <!-- @[Hero(super)] --> # Creating new contexts <!-- @[UsageExample] --> ## Usage example ```javascript Import { ICON_NAME } from 'Icons' ``` <!-- @[/Hero] --> <!-- @[Artic
<!-- @[Hero(super)] -->
# Creating new contexts
<!-- @[UsageExample] -->
## Usage example
```javascript
Import { ICON_NAME } from 'Icons'
```
<!-- @[/Hero] -->
<!-- @[ArticleSection] -->
[
{
"name": "Hero",
"type": "super",
"h1" "Creating new contexts"
},
{
"name": "UsageExample",
"h2" "Usage example",
"codeType": "JavaScript",
"code": "Import { ICON_NAME } from 'Icons'",
"parent": "Hero"
}
]
我并不期待所有的帮助,更精细的细节是可以的。我正在努力解决的部分是如何确定
和
之间的内容
tl;dr:我正在寻找一种方法来提取
和之间的文本。您可以使用这个正则表达式来捕获您在文章中提到的每个数据,使用它您可以创建您在文章中提到的JSON
(?s)<!-- @\[(\w+)\((\w+)\)\] -->\s+# ([\w ]+?)\s+<!-- @\[(\w+)\] -->\s+## ([\w ]+?)\s+```(\w+)\s+(.*?)```\s+<!-- @\[\/(\w+)\] -->
(?s)\s+#([\w]+?)\s+\s+#([\w]+?)\s++`(\w+)\s++(.*?)`\s+
上述正则表达式的命名组版本
(?s)<!-- @\[(?<name>\w+)\((?<type>\w+)\)\] -->\s+# (?<h1>[\w ]+?)\s+<!-- @\[(?<name2>\w+)\] -->\s+## (?<h2>[\w ]+?)\s+```(?<codeType>\w+)\s+(?<code>.*?)```\s+<!-- @\[\/(?<parent>\w+)\] -->
(?s)\s+#(?[\w]+?)\s+\s+#(?[\w]+?)\s+```(?\w+)\s+(?*?)`\s+
这里有两个名称,您不能有重复的组名,因此第二个名为name2
- (?s)这使点能够匹配新行,这将帮助您捕获多行中的数据
- regex的其余部分基本上将您想要的数据捕获到不同的组中,您可以在regex101演示中看到这些组
演示
(命名组版本)您可以使用此正则表达式捕获您在文章中提到的每个数据,使用它您可以创建您在文章中提到的JSON
(?s)<!-- @\[(\w+)\((\w+)\)\] -->\s+# ([\w ]+?)\s+<!-- @\[(\w+)\] -->\s+## ([\w ]+?)\s+```(\w+)\s+(.*?)```\s+<!-- @\[\/(\w+)\] -->
(?s)\s+#([\w]+?)\s+\s+#([\w]+?)\s++`(\w+)\s++(.*?)`\s+
上述正则表达式的命名组版本
(?s)<!-- @\[(?<name>\w+)\((?<type>\w+)\)\] -->\s+# (?<h1>[\w ]+?)\s+<!-- @\[(?<name2>\w+)\] -->\s+## (?<h2>[\w ]+?)\s+```(?<codeType>\w+)\s+(?<code>.*?)```\s+<!-- @\[\/(?<parent>\w+)\] -->
(?s)\s+#(?[\w]+?)\s+\s+#(?[\w]+?)\s+```(?\w+)\s+(?*?)`\s+
这里有两个名称,您不能有重复的组名,因此第二个名为name2
- (?s)这使点能够匹配新行,这将帮助您捕获多行中的数据
- regex的其余部分基本上将您想要的数据捕获到不同的组中,您可以在regex101演示中看到这些组
演示
(命名组版本)您已经尝试过什么?你能给我们举个例子吗?你已经试过什么了?你能给我们举个例子吗?我不认为OP在寻找两个标记之间的原始文本,我认为他在寻找一种方法,将JSON中他想要的内容从文本文件中分离出来。我真的不确定,不是很清楚,你可能是对的,所以我正在更新我的答案,OP可以在帖子中找到给定文本中的每一条信息。谢谢,@PushpeshKumarRajwanshi我想(?s)
部分可能是我遗漏的。@AlexFoxleigh:是的,可能是。我知道正则表达式有点复杂,可能不容易维护,因此我正在更新我的答案,以再次包含相同的正则表达式,但使用您在json中提到的带有密钥的命名组。使用它,您将能够通过引用名称而不是组1、组2等来轻松捕获数据。这太神奇了。非常感谢你!我不认为OP是在寻找两个标记之间的原始文本,我认为他是在寻找一种方法,从文本文件中分离出JSON中他想要的内容。我真的不确定,不是很清楚,你可能是对的,所以我正在更新我的答案,OP可以在帖子中找到给定文本中的每一条信息。谢谢,@PushpeshKumarRajwanshi我想(?s)
部分可能是我遗漏的。@AlexFoxleigh:是的,可能是。我知道正则表达式有点复杂,可能不容易维护,因此我正在更新我的答案,以再次包含相同的正则表达式,但使用您在json中提到的带有密钥的命名组。使用它,您将能够通过引用名称而不是组1、组2等来轻松捕获数据。这太神奇了。非常感谢你!