我需要在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


RegEx Demo

区别在于[\S\s]+?[\S\s]+,这是一个贪婪的rexex,并尽可能匹配,直到最后一个</VirtualHost>被匹配为止。

关于javascript - Javascript正则表达式匹配多个重复块,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28804514/

10-11 11:59