Ich arbeite an einem regulären Ausdruck, um polnische Telefonnummern in einer langen Zeichenfolge zu finden. Es könnte +48
, 0048
, 48
(in Klammern auf nicht) gefolgt von 9 Ziffern mit Leerzeichen dazwischen sein.Regulärer Ausdruck für eine polnische Telefonnummer
Die erste Idee war:
(\(?(\+|00)?48\)?)?[ -]?\d{3}[ -]?\d{3}[ -]?\d{3}
Dies fängt Dinge wie +48 123 456 789
und 123456789
sondern auch zwei Telefonnummern in 1234567899876543211
finden - das ist nicht akzeptabel. So habe ich Wortgrenzen:
\b(\(?(\+|00)?48\)?)?[ -]?\d{3}[ -]?\d{3}[ -]?\d{3}\b
Aber diese Regex, in einer Zeichenkette wie (+48) 123 456 789
nur 48) 123 456 789
erfassen wird. Warum wird der Anfang weggelassen?
(regex101 mit Beispielen, was passen sollte/sollte nicht überein)
Sind die Leerzeichen immer in Dreiergruppen? –
@WillemVanOnsem Ich bin OK mit einigen falschen Negativen, also ja, wir können diese Annahme machen. – maestromusica
Das ist wegen einer Wortgrenze, verschieben Sie es zu den Ziffern. Vor den Nicht-Wort-Zeichen fügen Sie '\ B' hinzu. –