我想要一个正则表达式来搜索logger.error("pbType",
并排除{}
例如:
logger.info("URL:\n\"{}\"\n",
这对我不起作用-re.search('.*logger.*"[\w.:-_()\[\]]*"\s*,',line)
它返回我的行{}
。请帮忙谢谢
让我们看看您当前的正则表达式如何解析有问题的行:
.*|logger| .* |"|[\w.:-_()\[\]]*|"|\s*|,
| | | | | | |
|logger|.info("URL:\n\"{}\|"|\n |"| |,
它将第三个引号作为正则表达式中的第一个引号。
要解决此问题,您要确保".*"
s 不会抢到超出您希望的范围。
[^"\n]*logger[^"\n]*"[\w.:-_()\[\]]*"\s*,
此外,您当前的正则表达式中还有一些其他错误:
[ :-_ ]
包括 ascii 58 到 95 范围内的所有字符。如果要在字符集中包含减号,则必须先执行。
[-\w.:_()\[\]]
将原始字符串用于正则表达式是一种很好的风格,因为您知道反斜杠将是反斜杠而不是触发转义序列。
re.search(r'...', line)
你想确保"\s*,
真正得到字符串的结尾,最后可能有一个\",{}
你没有抓住的,所以在你的正则表达式中匹配一个行尾...$
总之,这些建议将使您的代码行:
re.search(r'[^"\n]*logger[^"\n]*"[-\w.:-()\[\]]*"\s*,$', line)
做一个如果。不需要正则表达式 -
for i in l1:
if not("{}" in i):
l2.append(i)
考虑到 l1 是您的字符串列表,l2 是必需的结果。