在regex101.com上测试这个正则表达式时,当我在以下字符串上测试时,出现了“灾难性回溯”的错误:
使用PHP风格:
aaaaaaaaaaa-aaaaT
使用Python风格:
aaaaaaaaaaa-aaaaT
使用ECMAScript风格,这个更长的字符串超时了,可能是“灾难性回溯”的迹象:
aaaaaaaaaaa-aaaaaaaaaaaaaaaaaT
使用Java 8风格,字符串超时:
aaaaaaaaaaa-aaaaaaaaaaaaaT
但是Go风格没有出现任何错误或超时事件,即使是更长的字符串也是如此。相反,它显示“无匹配(0.0ms)”。
那么当我的正则表达式在Go中使用时,我可以忽略该错误/警告吗?
我也对此原因感兴趣,但以上是我的关键问题。
使用PHP风格:
aaaaaaaaaaa-aaaaT
使用Python风格:
aaaaaaaaaaa-aaaaT
使用ECMAScript风格,这个更长的字符串超时了,可能是“灾难性回溯”的迹象:
aaaaaaaaaaa-aaaaaaaaaaaaaaaaaT
使用Java 8风格,字符串超时:
aaaaaaaaaaa-aaaaaaaaaaaaaT
但是Go风格没有出现任何错误或超时事件,即使是更长的字符串也是如此。相反,它显示“无匹配(0.0ms)”。
那么当我的正则表达式在Go中使用时,我可以忽略该错误/警告吗?
我也对此原因感兴趣,但以上是我的关键问题。
^(?:[a-z0-9]-?)*[a-z0-9]$
,您就不会遇到任何回溯溢出问题。 - sln