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

Tomek

  • Administrator
  • Sr. Member
  • *****
  • Wiadomości: 322
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}).*?(?=[|])

Piotr

  • Administrator
  • Hero Member
  • *****
  • Wiadomości: 1828
W przypadkach gdzie symbol paczkomatu jest poprzedzony stałym słowem (np.: Paczkomat) i kończy się znakiem, np.:
Cytuj
Paczkomaty InPost*Bez Faktury*Paczkomat SXT01M*

Można użyć wyrażenia:
Cytuj
(?<=Paczkomat ).*?(?=\*)

gdzie:
(?<=Paczkomat ) - wyznacza wyraz rozpoczynający
(?=\*) -  - oznacza znak końcowy.
Znak końcowy poprzedzony jest  znakiem backslash bo gwiazdka jest znakiem specjalnym.
\

Tomek

  • Administrator
  • Sr. Member
  • *****
  • Wiadomości: 322
Jeśli symbol paczkomatu zawarty jest pomiędzy dwoma znakami @, można go wybrać stosując:

Cytuj
(?<=@).*?(?=@)

Tomek

  • Administrator
  • Sr. Member
  • *****
  • Wiadomości: 322
Jeśli w uwagach mamy zapis w różnych formach - np. czasem

Cytuj
Paczkomat: TOR17A

a czasem

Cytuj
PaczkoPunkt: WAW12B

możemy skorzystać z wyrażenia

Cytuj
(?<=Paczkomat: |PaczkoPunkt: ).*?(?=\r|\r\n|\n\r|\n|$)

które odczyta znaki spomiędzy "Paczkomat: " lub "PaczkoPunkt: ", a końcem linii.

Tomek

  • Administrator
  • Sr. Member
  • *****
  • Wiadomości: 322
Jeśli symbol paczkomatu znajduje się zawsze w pierwszej linijce uwag, bez żadnego przedrostka i kończy się "enterem", można użyć:
Cytuj
\A.*

Tomek

  • Administrator
  • Sr. Member
  • *****
  • Wiadomości: 322
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