/ / Regex - Znajdź wiele dopasowań - c #, regex

Regex - Znajdź wiele dopasowań - c #, regex

Mam następujące 1010159552597 i chciałbym znaleźć numery, które zaczynają się od 10, a następnie 1 lub 0 i kończą się 7 cyframi. Używam następujących RegEx do wyszukiwania

(10[01][0-9]{7})

Następujący wynik jest podany: 1010159552

Ale też oczekiwałbym następujących rzeczy: 1015955259

Jak mogę uzyskać oba wyniki?

Dzięki

Odpowiedzi:

1 dla odpowiedzi № 1

Wyrażenia regularne konsumować postacie i nie powracaj do poprzednich meczy. Aby obejść to, co chcesz, obejrzyj to, używając twierdzeń o zerowej długości (zobacz poniższy kod).

Kod

Zobacz tutaj wyrażenie regularne tutaj

(?=(10[01]d{7}))

Wyniki znajdują się w grupie 1 przechwytywania:

  • 1010159552
  • 1015955259

Wyjaśnienie

  • (?=(10[01]d{7})) Pozytywny uprzedzający zapewniający to, co następuje mecze
    • (10[01]d{7}) Uchwyć oryginalne wyrażenie w grupie przechwytywania 1

0 dla odpowiedzi nr 2

Masz rację, ponieważ twoje oczekiwania pasują do Twojego wyrażenia regularnego, jednak spróbuje znaleźć pierwszą instancję tego dopasowania.

W twoim przypadku pierwszym terminem jest:

10 - 1 - 0159552

więc to jest podane rozwiązanie.

Ponieważ Twoje wyniki nakładają się, możesz sprawdzić ten artykuł.

Nakładające się mecze w Regex