Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.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
Python-使用regexp解析apache配置_Python_Regex_Apache_Configuration_Apache2 - Fatal编程技术网

Python-使用regexp解析apache配置

Python-使用regexp解析apache配置,python,regex,apache,configuration,apache2,Python,Regex,Apache,Configuration,Apache2,我想解析apache2.conf之类的配置文件,如下所示: <Group group1> param1 1 <SomeGroup group3> param3 3 </SomeGroup> </Group> <Group group2> param2 2 </Group> <Group group1> param1 1 <SomeGroup group

我想解析apache2.conf之类的配置文件,如下所示:

<Group group1>
   param1 1

   <SomeGroup group3>
      param3 3
   </SomeGroup>
</Group>

<Group group2>
   param2 2
</Group>
<Group group1>
   param1 1

   <SomeGroup group3>
      param3 3
   </SomeGroup>

参数1
参数3
参数2
Regexp:

re.findall(r'\</?[^\>]+\>([\s\S]+)\<//?[^\>]+\>', text, re.MULTILINE)
re.findall(r'\]+\>([\s\s]+)\]+\>',文本,re.MULTILINE)
如果我使用lazy regexp,它将如下剪切:

<Group group1>
   param1 1

   <SomeGroup group3>
      param3 3
   </SomeGroup>
</Group>

<Group group2>
   param2 2
</Group>
<Group group1>
   param1 1

   <SomeGroup group3>
      param3 3
   </SomeGroup>

参数1
参数3

如果我使用贪婪的regexp,它会剪切所有文本。那么,正确的解析方法是什么呢?或者有任何库吗?

单独使用regexp无法做到这一点。regexp引擎没有状态,因此只能解析非常简单的输入。其他选项请参见此处:

有。

不要使用正则表达式解析XML@Katrielex:apache配置文件不是有效的XML。在此类数据上使用正则表达式可能会重复Still,这不是一个好主意。如果解析器不存在,则构建一个解析器。正则表达式(如果可能的话)会很快变得非常复杂。@Katrielex不是重复的-主要问题是如何编写正确的正则表达式。谢谢,我将尝试使用这个库!Augeas有点奇怪,很难使用。