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 № 1Wyraż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ł.