/ / Как да намерим уникална повтаряща се група в regex - regex

Как да намерите уникална повтаряща се група в regex - regex

Моят редовен израз = "(d+)1+" Моята цел е да улови повтарящи се патети като 2323, 1212, 345345, които имат различни цифри. Текущото regex също улавя 11,22,11111, което трябва да изключи

Пример - За вход = 44556841335158684945454545 Съвпадения са 44 55 45454545 Мачовете трябва да бъдат - 45454545

Как да напиша regex, който изключва 44 и 55 и дава резултати, които имат различни цифри

Отговори:

0 за отговор № 1

Можете да опитате да кажете „два различни повторения“

((d)(?!2)d)1

Кръгли скоби са номерирани отляво; така 1 съвпада с целия външен чифт на скоби и (?!2) се отнася до вътрешните скоби около първата цифра, ограничавайки втората цифра, така че тя не може да бъде идентична на първата.

Демонстрация: https://regex101.com/r/5f2CEf/1

Очевидно е, че добавете a + в края да покрие всички съседни повторения на мача.


1 за отговор № 2

Ето и регреса, който смятам, че искате:

(d)((?!1)d)

Малко обяснение:

(d)

d съответства на цифра (равна на [0-9])

((?!1)d)

Отрицателен поглед (?!1)

Уверете се, че Regex по-долу не съвпада

1

съвпада със същия текст, който съвпада с последната група на първото заснемане

d

съвпада с цифра (равна на [0-9])

Ето една бърза JS демонстрация:

var s = "44556841335158684945454545"
console.log(s.match(/(d)((?!1)d)/g))