Python正则表达式匹配列表但不列出字典

时间:2016-11-17 08:27:58

标签: python

我的文字文件看起来像

logSet1 = [
                       { log1 = event1,
                         log2 = event2
}
]


logSet2 = [
                         log1,
                         log2
]

我想写一个只匹配logSet2而不是logSet1的正则表达式。我试过了

\= \[[ ]*\n([^\{].*\n)*?[ ]*\]\

但它与两者都匹配..我认为[^\{]会强制它与不以\{开头的字符串匹配。

1 个答案:

答案 0 :(得分:2)

如果您的文件是以编程方式构建的,请考虑将其加载到数据结构中并导航它们。

对于正则表达式本身,您可能希望使用该语言的某些功能。

"[ ]*" -- any number of spaces is not great for what you're angling for. Tabs and non breaking white spaces will through you for a loop, as will system differences (\n vs \r vs \r\n). Try just \s*

\ w也是你的朋友(单词字符,a-zA-Z0-9和一些标点符号)

在那种情况下,我建议:

\w[\w\s]*= \[\s*[\w,\s]*\]

单词字符,后跟多个单词或空格,后跟=,空格和开括号。 " \ w [\ w \ s] * = ["得到你" logSet2 = ["。然后是许多空格字符,后跟单词字符,逗号和空格,最后用括号括起来。带有大括号的logSet1和=永远不会匹配。

缺点是数据,这里表示为" log1"和" log2"有了这些特征,整个正则表达法就会崩溃。