查找JavaScript的最長重複子我想找到一個字符串中的最長重複串,用JavaScript實現,並使用正則表達式爲基礎的方法。使用正則表達式
我有一個PHP實現,當直接移植到JavaScript中,不能正常工作。
PHP實現從一個答案帶到問題"Find longest repeating strings?":
preg_match_all('/(?=((.+)(?:.*?\2)+))/s', $input, $matches, PREG_SET_ORDER);
這將填充$matches[0][X]
(其中X
是$matches[0]
的長度)與最長子串的重複在$input
被發現。我用很多輸入字符串測試了這個,發現我確信輸出是正確的。
JavaScript中的最接近的直接端口是:
var matches = /(?=((.+)(?:.*?\2)+))/.exec(input);
這不會給出正確的結果
input Excepted result matches[0][X] ====================================================== inputinput input input 7inputinput input input inputinput7 input input 7inputinput7 input 7 XXinputinputYY input XX
我不熟悉不夠用正則表達式來理解這裏使用什麼正則表達式是在做。
當然,我可以實現的算法來查找最長的重複子字符串。在我嘗試這樣做之前,我希望不同的正則表達式能夠在JavaScript中產生正確的結果。
上述正則表達式是否可以修改,以便在JavaScript中返回預期的輸出?我承認,這可能不可能在一行中。