1

我目前正在尝试通过 VirtualHost 匹配 apache 配置文件中的单个 Apache VirtualHost 条目ServerName。我正在使用 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>


我想将 VirtualHostServerNamedesired.dev. 所以我的目标是:

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


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

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

但是这个问题是它匹配第一个<VirtualHost...,匹配ServerName和停止匹配在所需虚拟主机的结束标记的末尾。

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

4

1 回答 1

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

试试看,它使用前瞻来确保它不会在任何 VirtualHost 结束标记上运行。

于 2013-10-01T21:41:40.450 回答