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