Heim > Fragen und Antworten > Hauptteil
Zum Beispiel die Zeichenfolge 1212121212121212121212
Sie müssen 5 aufeinanderfolgende 12er oder 5 aufeinanderfolgende 21er erreichen, um als teilnahmeberechtigt zu gelten
Die Anzahl der Übereinstimmungen sollte 13 betragen, wie im Bild unten gezeigt, die roten Linien stellen Übereinstimmungen dar.
曾经蜡笔没有小新2017-07-05 10:00:15
考虑不占位提取,使用环视提取子分组:(?=.*?((12|21)\2{4}))
demo链接:http://regex.zjmainstay.cn/r/...
大家讲道理2017-07-05 10:00:15
>>> import re
>>> ss='1212121212121212121212'
>>> re.findall(r'(?=((12|21)\2{4}))',ss)
[('1212121212', '12'), ('2121212121', '21'), ('1212121212', '12'), ('2121212121', '21'), ('1212121212', '12'), ('2121212121', '21'), ('1212121212', '12'), ('2121212121', '21'), ('1212121212', '12'), ('2121212121', '21'), ('1212121212', '12'), ('2121212121', '21'), ('1212121212', '12')]
js的Re引擎有点粗糙,需要循环返回子匹配。
var str="1212121212121212121212";
var pattern=/(?=((12|21)\2{4}))/g;
while(m = pattern.exec(str)){
console.log(m[1])
pattern.lastIndex++ //由于没有消耗字符,js的Re引擎不会递增索引。
}
女神的闺蜜爱上我2017-07-05 10:00:15
var pattern=/(?:(1)(?=(?:21){4}2))|(?:(2)(?=(?:12){4}1))/g;
var str="1212121212121212121212";
console.log(str.match(pattern));