我正在使用Javascript,但我認爲這是一個普通的正則表達式問題。優化特定的正則表達式搜索等距字母
我在寫一個腳本,它在字母之間的距離相等的長字符串中搜索子字符串。例如,在文本a11b22c33d44
中,我們有字符串abcd
,每兩個連續字母之間的距離爲2。
使用正則表達式搜索找到這樣的字符串是微不足道的:對於上面的示例,我只需要搜索正則表達式/a.{2}b.{2}c.{2}d/
。所以我現在做的是這樣的:給一個詞搜索和連續字母之間的距離,我簡單地把它們放在.{n}
之間(其中n是距離),把它編譯成正則表達式,讓它完成剩下的工作。
只要字母之間的距離很小 - 例如1000左右,這在實踐中效果很好。之後它變得很慢。它仍然有效,但我希望有另一種方式可以更有效地執行相同的搜索。我沒有看到明顯的原因,爲什麼對於更大的差距,它應該是顯着更慢(我們仍然需要遍歷整個文本只有一次,對吧?)
你舉例regexp'a。{2} b。{2} c。{2} d'也會匹配'aaabbbcccd' - 這是故意的嗎? – hochl
是的,因爲aaabbbcccd仍然包含「abcd」作爲字母間距離爲2的子字符串。 –