To wyrażenie pasuje jedna lub więcej grup powtarzając:
(.+)(?=\1+)
Oto to samo wyrażenie w podziale, (używając komentarza, aby można go było używać bezpośrednio jako wyrażenie regularne).
(?x) # enable regex comment mode
( # start capturing group
.+ # one or more of any character (excludes newlines by default)
) # end capturing group
(?= # begin lookahead
\1+ # match one or more of the first capturing group
) # end lookahead
W celu dopasowania do określonego wzoru, zmienia .+
do tego wzoru, np \d+
dla jednego lub więcej numerów lub \d{4,}
, aby dopasować 4 lub więcej liczb.
Aby dopasować określoną liczbę wzorów, zmień \1+
, np. \1{4}
na cztery powtórzenia.
Aby pozwolić powtórzeniu nie być obok siebie, możesz dodać .*?
w gnieździe wyprzedzającym.
jakim języku/platforma używasz? –
Używam C#. Jedyne, czego potrzebowałem to regex, więc wdrożyłem rozwiązanie RichieHindle i zweryfikowałem je na podstawie moich danych testowych! Wiele się też nauczyłem z doskonale komentowanego regexu Petera Boughtona. Dzięki Wam obojgu! –
@MarkWithers Mam do czynienia z tym samym problemem. Czy możesz być bardziej konkretny i powiedzieć mi coś więcej o swoim rozwiązaniu? Dziękuję – user2179427