Javascript 匹配多个重复块的正则表达式
Javascript Regex matching multiple repeating blocks
我需要在 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>
....
我当前的 RegEx 模式是:
/<VirtualHost[*:0-9\s]+>([\S\s]+)<\/VirtualHost>/g
我知道我的捕获组是我只得到一个匹配集(整个字符串原样)的原因,但我不知道如何捕获 VirtualHost 块之间的内容。
我想输出的是一个数组,它是:[<first vhost>, <second vhost>, <third vhost>, ...]
任何帮助都会很棒!
使用非贪婪正则表达式:
/<VirtualHost[*:0-9\s]+>([\S\s]+?)<\/VirtualHost>/g
区别在于 [\S\s]+?
与 [\S\s]+
,后者是一个贪婪的 rexex,会尽可能多地匹配,直到匹配到最后一个 </VirtualHost>
。
我需要在 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>
....
我当前的 RegEx 模式是:
/<VirtualHost[*:0-9\s]+>([\S\s]+)<\/VirtualHost>/g
我知道我的捕获组是我只得到一个匹配集(整个字符串原样)的原因,但我不知道如何捕获 VirtualHost 块之间的内容。
我想输出的是一个数组,它是:[<first vhost>, <second vhost>, <third vhost>, ...]
任何帮助都会很棒!
使用非贪婪正则表达式:
/<VirtualHost[*:0-9\s]+>([\S\s]+?)<\/VirtualHost>/g
区别在于 [\S\s]+?
与 [\S\s]+
,后者是一个贪婪的 rexex,会尽可能多地匹配,直到匹配到最后一个 </VirtualHost>
。