我目前正在尝试通过VirtualHost的ServerName在apache配置文件中匹配单个Apache VirtualHost条目。我正在使用python,使用re模块。

这是我正在使用的文件类型的示例:

<VirtualHost *:8000>
    DocumentRoot "/path/to/dir1"
    ServerName eg1.dev
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/path/to/docroot"
    ServerName desired.dev
</VirtualHost>

<VirtualHost *:8080>
    DocumentRoot "/path/to/dir3"
    ServerName eg2.dev
</VirtualHost>




我想将VirtualHost与ServerNamedesired.dev匹配。所以我的目标是:

<VirtualHost *:80>
    DocumentRoot "/path/to/docroot"
    ServerName desired.dev
</VirtualHost>




我以为使用正则表达式会很简单,但是我不知道该怎么做。我目前有:

<VirtualHost \*:[0-9]*>.*?ServerName +desired\.dev.*?</VirtualHost>

但是,这样做的问题是它与第一个<VirtualHost...匹配,与ServerName匹配,并在所需VirtualHost的结束标记结尾处停止匹配。

我知道可能有用于解析Apache配置文件的python模块,但我不希望使用标准库之外的任何内容。如果使用正则表达式尝试这样做是一个糟糕的主意,还有其他选择吗?

最佳答案

<VirtualHost \*:[0-9]*>(?:.(?!</VirtualHost))*?ServerName +desired\.dev(?:(?!</VirtualHost).)*?</VirtualHost>


尝试这样做,它使用前瞻性来确保它没有在任何VirtualHost关闭标签上运行。

关于python - 将特定的Apache VirtualHost与regex匹配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19126342/

10-12 02:52