繁体   English   中英

Python正则表达式匹配列表,但不包含字典列表

[英]Python regex match list but not list with dictionaries

我有看起来像的文本文件

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


logSet2 = [
                         log1,
                         log2
]

我想写一个仅与logSet2不匹配的正则表达式logSet1。 我努力了

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

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

如果您的文件是通过程序构造的,请考虑将其加载到数据结构中并进行导航。

对于您的regex本身,您可能想使其更舒适一些。

"[ ]*" -- 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”的这些字符使整个正则表达式方法崩溃了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM