ProstaPaczka2
ProstaPaczka2 => Subiekt GT => Wątek zaczęty przez: Piotr w Styczeń 03, 2020, 02:21:19 pm
-
(na podstawie zgłoszenia)
W jaki sposób mam użyć opcji pobierania symbolu paczkomatu z uwag dokumentu Subiekta GT?
Jakie mam wprowadzić wyrażenie regularne?
-
W przypadku gdy w uwagach jest jakaś część tekstu, która występuje przed symbolem możemy jej użyć do wyszukiwania:
Przykładowo dla treści:
Paczkomat do wysyłki paczek: BBI005
Możemy zastosować pobieranie 6 znaków po tym wyrażeniu:
(?<=Paczkomat do wysyłki paczek: ).{6,6}
Gdy wiemy, że tekst jest wprowadzany w liniach, to lepiej jest użyć odczytu do końca linii (są paczkomaty z dłuższymi symbolami niż 6 znaków)
(?<=Paczkomat do wysyłki paczek: ).*?(?=\r|\n|\r\n)
A jeżeli na końcu zdania (po symbolu) jest jakiś znak (np. kropka), to najlepiej zastosować wyrażenie:
"Paczkomat do wysyłki paczek: BBI005."
(?<=Paczkomat do wysyłki paczek: ).*?(?=\.)
-
Dla przykładu tekstu:
[OP]|Paczkomat CNO01C (CNO01C)|Wolska 13|Lokalizacja przy ulicy Wolskiej - obok sklepu Top Market|05-650 Chynów|PL|tel: +48 512 370 830|e-mail: icbt7sll4n+69d950742@allegromail.pl [/OP]
Można użyć wyrażenia:
(?<=\[OP]\|.*\().*?(?=\))
-
Panie Piotrze, dla ZK z Allegro sprawa oczywista, co w przypadku ZK ze sklepu?
Trzeba tworzyć zapis punktu odbioru w PW wg poniższego schematu?
[OP]|Paczkomat CNO01C (CNO01C)|Wolska 13|Lokalizacja przy ulicy Wolskiej - obok sklepu Top Market|05-650 Chynów|PL|tel: +48 512 370 830|e-mail: jak@kowalski.pl [/OP]
-
Trudno byłoby dostosować zapis ze sklepu do takiej formy zapisu.
Można skrócić wyrażenie regularne:
(?<=aczkomat ).*?(?= |\.|$)
Będzie brało tekst pomiędzy słowem "aczkomat " a spacją " " lub kropką "." lub końcem pola.
Przy takim podejściu zamówienia ze sklepu internetowego mogą wkładać do pola własnego dokumentu Subiekta zapis:
Paczkomat ABC123 ... dalszy tekst
Paczkomat ABC123.
Paczkomat ABC123
-
Przykład dla wybierania symbolu paczkomatu z pola własnego:
BBI005:Nazwa ulicy 11:...
Aby wybrać pierwszy ciąg znaków do dwukropka należy użyć wyrażenia:
Wyrażenie: ^.*?(?=:)
-
W przypadku gdy wyrażenie używane w wyrażeniu regularnym występuje kilka razy w danym polu, np:
Paczkomat do wysyłki paczek: Paczkomat WAW30A
To w wyrażeniu regularnym należy wpisać taki ciąg, który jest unikalny:
Nieprawidłowy: (?<=Paczkomat ).*?(?=\r|\n|\r\n)
Prawidłowy: (?<=wysyłki paczek: Paczkomat ).*?(?=\r|\n|\r\n)
-
Przykład dla zawartości uwag dokumentu Subiekta GT
abc
Paczkomat: [BBI005]
abc
Wyrażenie regularne: (?<=Paczkomat: \[).*?(?=\])
-
Wyrażenie regularne (Regex) pobierające symbol paczkomatu z dokumentu Subiekt GT o treści:
**200267421*12345678-abcd-1234-abcd-123456789101*allegro(111)*klient*PayU*Allegro Paczkomaty 24/7 InPost*Bez Faktury*Punkt:Paczkomat KAR02M*Ulica 1*11-111 Miasto*
wygląda następująco:
(?<=Paczkomat ).*?(?=\*)
-
Dla przykładowej zawartości w uwagach:
Forma dostawy: Paczkomaty 24/7
Typ dokumentu: Faktura
PNI: BBI005
Punkt odbioru: Paczkomat BBI005
Jako wyrażenie regularne do wyszukiwania z uwag dokumentu należy wpisać:
(?<=PNI: ).*?(?=\r|\r\n|\n\r|\n)
-
Dla przykładowej treści w uwagach / polu własnym:
Paczkomat BBI005 (BBI005) | A1: Ul. Przykłądowa 11 | A2: | P: Polska | K: 01-485 | M: Warszawa
Można zastosować wyrażenie wybierające frazę z pomiędzy nawiasów:
(?<=\().*?(?=\))
-
Dla przykładu pobierania symbolu paczkomatu z uwag dokumentu Subiekta GT:
Odbiór w punkcie - Allegro Paczkomaty InPost InPost dla: (brak) nickuKupujacegoPaczkomat WRO15N (WRO15N), Białowieska 13A, 54-234 Wrocław
Najlepiej zastosować wyrażenie regularne wybierające wartość od słowa "Paczkomat " do nawiasu " (":
(?<=Paczkomat ).*?(?= \()
-
Jeśli w uwagach mamy:
Allegro Paczkomaty 24/7 InPost InPost Paczkomat BIN01F (BIN01F), Partyzantów 14, 26-004 Bieliny
to symbol paczkomatu wybieramy wyrażeniem:
(?<=\().*?(?=\))
czyli wszystkie znaki spomiędzy nawiasów.
-
Jeśli symbol paczkomatu zapisany jest jako:
Allegro Paczkomat 24/7 InPost Gabaryt A
(np. w polu własnym) i musimy wybrać ostatni znak z pola, powinniśmy zastosować wyrażenie:
.$
-
Jeśli chcemy pobrać całą zawartość pola własnego jako symbol paczkomatu, należy użyć wyrażenia:
.*
-
Dla przykładowych uwag:
paragon|Paczkomaty InPost|BYD01A|Przelew online (DotPay, PayPal)|15|zam nr xyz|6
musimy zacząć pobieranie od drugiego wystąpienia znaku | i zakończyć na najbliższym wystąpieniu znaku |
Najlepiej będzie zastosować wyrażenie:
(?<=^(?:[^|]+\|){2}).*?(?=[|])
-
W przypadkach gdzie symbol paczkomatu jest poprzedzony stałym słowem (np.: Paczkomat) i kończy się znakiem, np.:
Paczkomaty InPost*Bez Faktury*Paczkomat SXT01M*
Można użyć wyrażenia:
(?<=Paczkomat ).*?(?=\*)
gdzie:
(?<=Paczkomat ) - wyznacza wyraz rozpoczynający
(?=\*) - - oznacza znak końcowy.
Znak końcowy poprzedzony jest znakiem backslash bo gwiazdka jest znakiem specjalnym.
\
-
Jeśli symbol paczkomatu zawarty jest pomiędzy dwoma znakami @, można go wybrać stosując:
(?<=@).*?(?=@)
-
Jeśli w uwagach mamy zapis w różnych formach - np. czasem
Paczkomat: TOR17A
a czasem
PaczkoPunkt: WAW12B
możemy skorzystać z wyrażenia
(?<=Paczkomat: |PaczkoPunkt: ).*?(?=\r|\r\n|\n\r|\n|$)
które odczyta znaki spomiędzy "Paczkomat: " lub "PaczkoPunkt: ", a końcem linii.
-
Jeśli symbol paczkomatu znajduje się zawsze w pierwszej linijce uwag, bez żadnego przedrostka i kończy się "enterem", można użyć:
\A.*
-
Jeśli mamy uwagi w następującym formacie:
@NAZWA FIRMY@IMIE@NAZWISKO@MIASTO@KOD POCZTOWY@SYMBOL KRAJU@SYMBOL PACZKOMATU@
to symbol paczkomatu wyciągniemy wyrażeniem:
(?<=^(?:[@].*){7}).*?(?=\@)
czyli wszystko co pomiędzy 7, a 8 wystąpieniem znaku @
Jeśli na końcu nie ma znaku @, czyli:
@NAZWA FIRMY@IMIE@NAZWISKO@MIASTO@KOD POCZTOWY@SYMBOL KRAJU@SYMBOL PACZKOMATU
powinniśmy zastosować wyrażenie:
(?<=^(?:[@].*){7}).*?(?=$)
czyli od 7 wystąpienia znaku @ do końca linii