/ / Wyrażenie regularne w python 2.7.11 - python, regex

Wyrażenie regularne w python 2.7.11 - python, regex

Nie jestem pewien, dlaczego regex - b((+65[s-]*)?[3689]d{3}[s-]*d{4})b nie działa +6565066859

Odpowiedzi:

1 dla odpowiedzi № 1

Twój wzorzec obecnie nie działa z powodu granicy słowa, która jest umieszczona na początku. Pamiętaj, że granica słowa będzie pasować między słowem a

  • nie-słowo-znak
  • początek ciągu
  • koniec ciągu

W Twoim przypadku b jest umieszczony między początkiem łańcucha a +, gdzie się dopasuje, a więc twój pierwszy opcjonalnygrupa nigdy nie będzie pasować. Reszta wzorca składa się z 8-cyfrowej liczby (jeśli na chwilę zapomnimy spacji i łączników), ale liczba, którą spróbujesz przetestować, składa się z 10 znaków, więc obie granice słów nie mogą się równać.

Myślę, że możesz przepisać swój wzorzec jako ((?:(+65[s-]*)|b)[3689]d{3}[s-]*d{4})b w ten sposób dopasowując +65 lub granicę słowa. Nie jestem pewien, czy używasz grup przechwytujących we wzorcu, więc zachowałem je tak, jak są.