簡體   English   中英

正則表達式太慢需要優化

[英]Regex Too Slow Need To Optimize

我正在使用像“a.{1000000}b.{1000000}c”這樣的正則表達式來對字符串進行模式匹配。 然而,這太慢了。 有一個更好的方法嗎? 我對 a、b 和 c 之間的東西不感興趣,只要它們的間隙達到我指定的大小我就不關心其中的內容。 可以將其視為跳過 n 個字符。 檢查索引也不適合我,我需要使用 C 中編寫的一些內置方法。有什么建議嗎?

提前致謝

如果您只需要驗證字符串是否在給定模式中並且不關心提取 a、b 或 c,那么這將起作用:

(?=^a.{50000}.{50000}.{50000}.{50000}.{50000}.{50000}.{50000}.{50000}.{50000}.{50000}.{50000}.{50000}.{50000}.{50000}.{50000}.{50000}.{50000}.{50000}.{50000}.{50000}b.{50000}.{50000}.{50000}.{50000}.{50000}.{50000}.{50000}.{50000}.{50000}.{50000}.{50000}.{50000}.{50000}.{50000}.{50000}.{50000}.{50000}.{50000}.{50000}.{50000}c$)

正則表達式量詞的限制是65535 ,所以如果你需要一百萬,那么你必須像我上面那樣重復.{50000} 20 次。

現在你只需要制作 Python 代碼,上面寫着“如果正則表達式匹配則繼續”

Regex101 需要 68 毫秒,所以我認為這是“快”的。

https://regex101.com/r/q6RgNJ/1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM