这是分析器的结果:
在视图'destinationDetails'中,以下内容 正则表达式不能由系统加速执行 正则表达式引擎,将使用Java的内置常规执行 表达引擎改为:
/(?<=dst\s)(.+?)\n/
在大多数情况下,这种不兼容的发生是因为常规 表达式包含lookahead / lookbehind构造
\A, \Z, \b, ^, $, (?=X), (?!X), (?<=X), or (?<!X)
输入来源: 2011-12-06T00:02:01.726755 + 05:18 Dec 06 2011 00:00:33 KOC-TEJ-CBA-ASA-5510-3:%ASA-4-106023:拒绝tcp src CBA:10.2.2.78/1885 dst外部:10.31.129.2 / 1494 by access-group “CBA_access_in”[0x8104ddd0,0x0]
有人可以解释如何更有效地克服分析器警告吗?
答案 0 :(得分:0)
在给出警告信息示例的情况下,正则表达式中作为潜在问题突出的一个元素是“零宽度正向观察”(?<=dst\s)
。它用于确保“dst \ s”在比赛的剩余部分之前,但不会作为比赛的一部分被捕获。
如何替换(?<=dst\s)
这取决于整体正则表达式的使用方式:
dst\s
作为比赛的一部分被捕获是非常重要的?简而言之,如果你只是想要一个答案“正则表达式是否匹配某些输入,是或否”,那么你可能不关心消耗的是什么。尝试:/dst\s(.+?)\n/
。
如果这是一个更大的正则表达式的一部分,或者如果你正在做的更复杂的正则表达式比简单的“是/否”匹配,那么这将需要提出,以便有人提出任何明智的建议。