0

我想要一个正则表达式来搜索logger.error("pbType",

并排除{}例如:

logger.info("URL:\n\"{}\"\n",

这对我不起作用-re.search('.*logger.*"[\w.:-_()\[\]]*"\s*,',line)

它返回我的行{}。请帮忙谢谢

4

2 回答 2

2

让我们看看您当前的正则表达式如何解析有问题的行:

.*|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)
于 2013-07-27T02:27:50.997 回答
1

做一个如果。不需要正则表达式 -

for i in l1:
    if not("{}" in i):
        l2.append(i)

考虑到 l1 是您的字符串列表,l2 是必需的结果。

于 2013-07-27T01:39:14.837 回答