我正在尝试将任何字符串分成3个字符的子字符串列表。
例如:abcdefgh
分为:
abc , bcd , cde , def , efg , fgh
所以我写了以下正则表达式:
"abcd".match(/.{1,3}/g);
,但输出为abc , d
。如何获得如上所述的输出?
答案 0 :(得分:0)
由于不能存在重叠的匹配项,因此您需要使用 something 来禁止正则表达式引擎前进和使用该字符串。
答案是环顾四周,尤其是:积极的前瞻性。它不会消耗字符串,并且可以在内部包含captuirng组,然后您就可以访问它。
使用以下模式:(?=([a-z]{3}))
。它断言,当前位置之后是三个小写字母。由于它被包裹在前行中,因此它不会前进在后面找到三个字母。
结果,您将获得6个匹配项,这些匹配项将为空,但但每个匹配项将包含捕获组,该匹配组将包含三个字母。