爲什麼這個無辜的正則表達式正在查殺我的請求?.NET正則表達式需要很長時間才能找到匹配
([\d\w-]+.){6}hi
這個候選人是catastrophic backtracking?
在.NET框架4.5.2,C#
爲什麼這個無辜的正則表達式正在查殺我的請求?.NET正則表達式需要很長時間才能找到匹配
([\d\w-]+.){6}hi
這個候選人是catastrophic backtracking?
在.NET框架4.5.2,C#
要匹配文字圓點運行這個,你必須逃脫它。如果你不這樣做,量化羣體([\d\w-]+.){6}
將導致更長的輸入的災難性回溯。更改爲([\w-]+\.){6}hi
。
請注意,[\d\w-]+
匹配1個或多個(未知數字)字母,數字,_
或-
。 A .
匹配任何字符。當你應用一個量詞時,正則表達式引擎會嘗試所有可能的方式來匹配一個字符串,然後再失敗。對於找到匹配的字符串通常不存在問題,它通常發生在無法找到匹配的字符串,因爲所有可能的方法都會被嘗試(直到引擎報告崩潰)。
此外,\d
模式匹配數字,並且\w
也匹配數字,所以在字符類內部都沒有使用兩個點。
我不知道'\ w'也是數字。爲此+1。 –
是的,[它可能](https://regex101.com/r/juz7Ap/1),你的'.'應該匹配什麼?如果一個字面點,逃避它。 –
謝謝@WiktorStribiżew,正則表達式的問題。應該已經逃脫了這個點。 –