Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.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_Regex_Pattern Matching_Match - Fatal编程技术网

匹配多个重复块的Javascript正则表达式

匹配多个重复块的Javascript正则表达式,javascript,regex,pattern-matching,match,Javascript,Regex,Pattern Matching,Match,我需要在Javascript中匹配一系列重复的VirtualHost配置,例如: ... # First VHost... <VirtualHost *:80 *:8082> # Any number of configs # and set up options for # Apache </VirtualHost> # Second VHost... <VirtualHost *:80 *:8082> # Any numb

我需要在Javascript中匹配一系列重复的
VirtualHost
配置,例如:

...
# First VHost...
<VirtualHost *:80 *:8082>
    # Any number of configs
    # and set up options for
    # Apache
</VirtualHost>

# Second VHost...
<VirtualHost *:80 *:8082>
    # Any number of configs
    # and set up options for
    # Apache
</VirtualHost>

# Third VHost...
<VirtualHost *:80 *:8082>
    # Any number of configs
    # and set up options for
    # Apache
</VirtualHost>
....
。。。
#第一个虚拟主机。。。
#任意数量的配置
#并为
#阿帕奇
#第二。。。
#任意数量的配置
#并为
#阿帕奇
#第三。。。
#任意数量的配置
#并为
#阿帕奇
....
我当前的正则表达式模式是:

/<VirtualHost[*:0-9\s]+>([\S\s]+)<\/VirtualHost>/g
/([\S\S]+)/g
我知道捕获组是我只获得一个匹配集(整个字符串)的原因,但我不知道如何捕获VirtualHost块之间的内容

我想要输出的是一个数组:
[,…]
任何帮助都会很好

使用非贪婪正则表达式:

/<VirtualHost[*:0-9\s]+>([\S\s]+?)<\/VirtualHost>/g
/([\S\S]+?)/g


区别在于
[\S\S]+?
[\S\S]+
这是一种贪婪的rexex,尽可能匹配,直到最后一个
匹配为止。

我知道这将是一个简单的答案。非常感谢!我会在你允许的时候做这样的标记。不贪心,学习新东西!如果能更深入地解释这项工作的原因,我们将不胜感激。我觉得太欠缺了,不值得投赞成票。好吧,我在我的回答中添加了一个解释,让它更清楚。@anubhava,效果很好,我今天学到了一些新东西。我很感激。