Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 试图从两组字符之间提取数据_Javascript_Node.js_Regex - Fatal编程技术网

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等来轻松捕获数据。这太神奇了。非常感谢你!