我有一个配置文件,用户可以指定部分,然后在这些部分中他们可以指定正则表达式。我必须解析这个配置文件并将正则表达式分成不同的部分。
有没有一种简单的方法可以将正则表达式与节标题分隔开来?我想的只是标准
[部分] 正则表达式1 正则表达式2
但我刚刚意识到 [section] 是一个有效的正则表达式。所以我想知道是否有一种方法可以格式化节标题,以便它只能被理解为节标题而不是正则表达式。
有无数种方法可以制作无效的正则表达式,但首先想到的是
*section*
*
正则表达式的开头不能有量词 ( )。
(另一个*
只是为了满足我对对称的痴迷。)
我不知道你的问题域,所以我不知道你期望什么形式的正则表达式,但在我看来你应该保持你的部分格式不变。以 [ 开头并以 ] 结尾且中间没有方括号的正则表达式是非常不寻常的。它只能匹配单个字符。因此,保留部分标题不变。严格来说,它们是有效的正则表达式,但它们可能不是有趣的正则表达式。
另外,为什么不使用ConfigParser
标准库,让它为你解析呢?
正如其他人所说,请不要发明另一种配置格式。使用 Python 标准库的ConfigParser,它将能够完全按照您所展示的那样解析 [section] 符号。
编辑:allow_no_value 选项允许您只有一个条目,而不是键/值对。并且默认的dict类型是OrderedDict,所以它会保持顺序。
有一些简单的方法,但它们都需要更改格式:
使用某种列表语法。 ast.literal_eval会有所帮助。
section1 = [
"regex 1",
"2",
"3",
]
section2 = ["..."]
首先,不要发明自己的格式,或者尽可能使其接近已知格式。例如,第三个是 Python 语法的子集,您甚至可以自然地使用原始字符串文字。
JSON 或 YAML 可能对您有用。