我希望您能用基于正则表达式的JavaScript实现来查找字符串中最长的重复字符串。
我有一个PHP实现,但直接移植到JavaScript后无法工作。
这个PHP实现是从一个回答中获取的,该回答针对问题“查找最长重复字符串”("Find longest repeating strings?"):https://dev59.com/yEfYs4cB2Jgan1znAgZ6
我有一个PHP实现,但直接移植到JavaScript后无法工作。
这个PHP实现是从一个回答中获取的,该回答针对问题“查找最长重复字符串”("Find longest repeating strings?"):https://dev59.com/yEfYs4cB2Jgan1znAgZ6
preg_match_all('/(?=((.+)(?:.*?\2)+))/s', $input, $matches, PREG_SET_ORDER);
这将在$input
中查找最长的重复子字符串,并将$matches[0][X]
(其中X
为$matches[0]
的长度)填充。我已经测试了许多输入字符串,并确信输出是正确的。
在JavaScript中,最接近的直接端口是:
var matches = /(?=((.+)(?:.*?\2)+))/.exec(input);
这不会给出正确的结果
input 期望的结果 matches[0][X] ====================================================== inputinput input input 7inputinput input input inputinput7 input input 7inputinput7 input 7 XXinputinputYY input XX
我对正则表达式不太熟悉,无法理解此处使用的正则表达式在做什么。
当然,我可以实现一些算法来查找最长重复子字符串。在尝试这样做之前,我希望使用不同的正则表达式能够在JavaScript中产生正确的结果。
是否可以修改上述正则表达式,以便在JavaScript中返回预期的输出?我接受这可能不可能在一行内完成。