Redash SQL中可能的正则表达式回溯问题

时间:2019-03-15 17:09:08

标签: regex backtracking redash

我已经在网站上记录了用户的操作,如下所示:

00:00 firstpage.textbox.hover
00:01 firstpage.textbox.push
00:02 firstpage.textbox.type
00:03 firstpage.textbox.submit

我正在尝试查找是否有特定的后续行动模式,例如

firstpage.textbox.type firstpage.textbox.submit

在它们之前,之间或之后可能还有其他动作。

到目前为止,我所做的是将动作链接到一个字符串,如:

firstpage.firstblock.open firstpage.textbox.push firstpage.textbox.type firstpage.textbox.submit

然后应用以下正则表达式以查找是否有我感兴趣的模式

select regexp_count(concatenated actions, '.*firstpage.textbox.type.*firstpage.textbox.submit.*') from t

一切正常,但是尝试对包含约50个以上项目的数据执行查询时出现以下错误

  

运行查询时出错:为REGEXP_COUNT提供的正则表达式产生了过多的匹配项。重写表达式。码:   8002上下文:匹配正则表达式的复杂性   超出了预定义的范围。尝试将正则表达式重构为   使状态机做出的每个选择都是明确的。

我认为问题是由于正则表达式(如'A.*B.*C')中的回溯。

您知道要更改此正则表达式以避免这种问题吗?

0 个答案:

没有答案