Autor Wątek: Jak wybrać symbol paczkomatu z dokumentu Subiekta GT?  (Przeczytany 16058 razy)

Piotr

  • Administrator
  • Hero Member
  • *****
  • Wiadomości: 1763
(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?
« Ostatnia zmiana: Luty 10, 2020, 10:25:42 am wysłana przez Piotr »

Piotr

  • Administrator
  • Hero Member
  • *****
  • Wiadomości: 1763
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: ).*?(?=\.)


Piotr

  • Administrator
  • Hero Member
  • *****
  • Wiadomości: 1763
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]\|.*\().*?(?=\))

kidl

  • Full Member
  • ***
  • Wiadomości: 107
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]

Piotr

  • Administrator
  • Hero Member
  • *****
  • Wiadomości: 1763
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


Piotr

  • Administrator
  • Hero Member
  • *****
  • Wiadomości: 1763
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: ^.*?(?=:)

Piotr

  • Administrator
  • Hero Member
  • *****
  • Wiadomości: 1763
W przypadku gdy wyrażenie  używane w wyrażeniu regularnym występuje kilka razy w danym polu, np:

Cytuj
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)

Piotr

  • Administrator
  • Hero Member
  • *****
  • Wiadomości: 1763
Przykład dla zawartości uwag dokumentu Subiekta GT

Cytuj
abc
Paczkomat: [BBI005]
abc

Wyrażenie regularne: (?<=Paczkomat: \[).*?(?=\])

Tomek

  • Administrator
  • Sr. Member
  • *****
  • Wiadomości: 314
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 ).*?(?=\*)
« Ostatnia zmiana: Wrzesień 21, 2020, 01:17:23 pm wysłana przez Tomek »

Piotr

  • Administrator
  • Hero Member
  • *****
  • Wiadomości: 1763
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)

Piotr

  • Administrator
  • Hero Member
  • *****
  • Wiadomości: 1763
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:
(?<=\().*?(?=\))
« Ostatnia zmiana: Listopad 19, 2021, 04:06:21 pm wysłana przez Tomek »

Piotr

  • Administrator
  • Hero Member
  • *****
  • Wiadomości: 1763
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 ).*?(?= \()

Tomek

  • Administrator
  • Sr. Member
  • *****
  • Wiadomości: 314
Jeśli w uwagach mamy:

Cytuj
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.

Tomek

  • Administrator
  • Sr. Member
  • *****
  • Wiadomości: 314
Jeśli symbol paczkomatu zapisany jest jako:
Cytuj
Allegro Paczkomat 24/7 InPost Gabaryt A
(np. w polu własnym) i musimy wybrać ostatni znak z pola, powinniśmy zastosować wyrażenie:
.$

Tomek

  • Administrator
  • Sr. Member
  • *****
  • Wiadomości: 314
Jeśli chcemy pobrać całą zawartość pola własnego jako symbol paczkomatu, należy użyć wyrażenia:

.*