我的表情是
\((from \/projects(\/(\w|.)+)+):$(\d+\))
我要匹配的字符串是:
(from /projects/idpro/branches/release_2018/test/test/test.1:13118)
(from /projects/idpro/trunk:13074)
我正在使用的在线正则表达式测试实用工具炸毁,说明catastrophic backtracking
。因此,在这里,我试图了解什么是回溯,因此可以避免它并修复我的代码。
在我提供的2个字符串示例中,我想两者都匹配。在第一种情况下,我尝试匹配(from /projects
。在单词projects
之后,只要字符串以:\d+\)
类似地,对于第二个示例,如果(from /projects
后跟至少一个folder
,并以:\d+\)
结尾,我想要一个匹配项。
AdThanksVance
答案 0 :(得分:0)
我不确定到底是什么导致了灾难性的回溯。但无论如何,我会这样称呼您的正则表达式:
^\(from \/projects(?:\/[^\/]+)*:\d+$
正如您在下面的演示中所看到的,没有发生灾难性的回溯。
灾难性的回溯通常与书写不当的正则表达式模式有关。因此,请不要这样做,并且可能不会发生。