我的代码正在解析日志文件中的一些行。
我对此做了很多事情,但特别需要能够找到不包含某个子字符串的行。在一定条件下
我对正则表达式有很好的理解。但我似乎无法弄清楚这一点。
问题:我想捕获任何不包含单词error
or的行warn
。除非它是日志条目的第一部分并用方括号括起来。
到目前为止,我已经尝试过这样的事情:
(((?:abc|cba)\s+.*(?!\[?(?!error|warn)\]?).*)|((abc|cba)\s+\[(error|warn)\]\s+(.*)))
日志中的行可能类似于以下示例:
捕获组 2:
abc [error] message
cba [error] message
cba [warn] message
捕获组 1:
abc something random
cba i dont know
不要捕获:
abc some [error] message
cba some [warn] message
简单英语的问题;我想得到任何以abc
or开头的行cba
。如果第 1 组没有[error]
或没有[warn]
任何位置,则捕获组 1 应该抓住该线。只有当[error]
或[warn]
是条目的第一部分(在abc
or之后cba
)时,捕获组 2 才应获取它