[英]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.