如果使用标准POSIX正则表达式前面有另一个字符串,你如何拒绝一个字符串?

Dav*_*ith 7 regex sitescope

我有一个正则表达式,它在我的日志中找到错误:

/(exception|error)/i
Run Code Online (Sandbox Code Playgroud)

这是有效的,除了我不希望在发生以下情况时收到警报,我希望发生这种情况:

DD/MM/YYYY 10:20pm: Read exception encountered
Run Code Online (Sandbox Code Playgroud)

如何明确拒绝"遇到的异常读取"字符串?我正在尝试使用?!运营商,但失败了:

/(?!Read exception encountered)(exception|error)/i
Run Code Online (Sandbox Code Playgroud)

上面仍然匹配我想要排除的字符串.

更新: 在尝试下面的负面lookbehind和lookahead解决方案后,我发现SiteScope仅支持基本的POSIX正则表达式功能,而不支持扩展功能.只使用基本的POSIX正则表达式功能是否可以实现解决方案?

Rob*_*t P 4

您想使用“Negative Lookbehind”(如果您的正则表达式引擎支持它)。实际上,您可以说“我想匹配 X 模式,只要其他模式不在它前面。”

在您的示例中,它看起来像这样:

/(?<!read )(exception|error)/i
Run Code Online (Sandbox Code Playgroud)

请在此处查看有关“环视”功能的更多信息。