我有一个包含以下数据的文件:
define host {
......
..... {3,9}
}
define host {
.......
...... text
}
define host {
.......
....... {3}
}
我想用python regex捕获所有主机定义并将它们存储在一个列表中(例如['define host {....}', 'define host {.....}'
),。你知道吗
re.findall('define\ +host[^}]*', cfg_file, re.Multiline|re.DOTALL)
re.finall('define\ +host.+?(?:define\ +host)', cfg_file,re.Multiline|re.DOTALL)
在单词而不是字符第一次出现之前,以上这些对我都不起作用,如[^}]*
-->;[^word]*
。你知道吗
结果应该是一个包含所有主机定义的列表:
['define host {...{}..}', 'define host {...}', 'define host {...}']
对于主机中的{}嵌套的单个级别,可以使用:
一个相当简单的解决方案是只匹配文件中从
define host
开始到下一个define host
的所有内容。这将不会检查花括号,但也没有复杂的匹配嵌套括号。你知道吗但是,如果有一种合理的情况
define host
会显示为宿主定义的一部分,那么您可能需要查看正则表达式以外的其他内容,因为它们不是解析嵌套结构的正确工具。你知道吗相关问题 更多 >
编程相关推荐