![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%) ![]() ![]() |
Mamy takie różne numery zgłoszeń, które mają dużo formatów w zależności od firmy i chciałbym mój regex ulepszyć aby nie łapał za dużo.
Mam 100% pewność, że te numery mimo różnego formatu zawierają jakieś cyfry, na pewno ich będzie więcej niż kilka. Ktoś pomoże dodać ten warunek? Tutaj to co mam teraz wraz z przykładami co powinno łapać, a co nie: https://regex101.com/r/IzEGsc/1 Mógłbym sprawdzić matches w drugiej pętli ale to by było słabe. Ten post edytował markonix 2.07.2018, 00:19:50 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 798 Pomógł: 307 Dołączył: 13.05.2009 Skąd: Gubin/Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Już wcześniej wydawało mi się że będziesz miał szerszy zakres. Widzisz, problem tutaj polega na tym że próbujesz wyłapać rzeczy które mogą wystąpić w różnej kolejności, dlatego łapie więcej niż powinien.
Nie da się tego jakoś idealnie ugrać jednym uniwersalnym regexem, najlepiej jakbyś zrobił kilka wyrażeń, gdzie każde będzie łapać specyficzne "formaty", bo zapewne te formaty mają jakiś schemat i każdy taki schemat musisz sobie wypisać i użyć LUB żeby użyć wielu takich wyrażeń. Wówczas łatwiej ci będzie wyłuskiwać tylko to co chcesz. Cytat Chyba \D łapie białe znaki? tak, to jest uproszczony odpowiednik [^0-9], możesz zrobić coś takiego: [\w\/-] tylko wówczas może to być zbyt bardzo zachłanne. Tutaj poprawione dla przykładów które podesłałeś: https://regex101.com/r/lnoaih/2 nie mniej, próbuj to ugrać poprzez wyrażenie per format, wówczas łatwiej ci będzie połączyć kilka takich wyrażeń w jedno, lub skrócić wyrażenie, bo będziesz miał "szerszy obraz". |
|
|
![]() ![]() |
![]() |
Aktualny czas: 16.10.2025 - 02:58 |