Modyfikacja kodów kreskowych

Ostatnio modyfikowane 2025/11/10 12:16 przez Jan Slezák

Wyrażenie regularne do modyfikacji kodów kreskowych

  • Kody kreskowe można teraz edytować w ustawieniach za pomocą wyrażenia regularnego
    • Ustawienia w urządzeniu: BARCODE_MODIFIER_REGEX_PATTERN
    • Wyrażenie regularne musi zawierać co najmniej jedną parę nawiasów okrągłych (tzw. grupa), w której znajduje się poszukiwana część kodu kreskowego.
    • Przykład: (\d+) – wybrane zostaną wszystkie cyfry
    • Uwaga! Wyrażenie regularne musi być napisane w taki sposób, aby wybierało prawidłowe sekwencje z podanego wpisu, a nie odwrotnie (tj. ignorowało niektóre sekwencje) → Dlatego musi zawierać co najmniej jedną grupę. ´
    • Należy zwrócić uwagę na spacje przed i po, które można wstawić w polu, a następnie zapisać. Dzieje się tak na przykład podczas kopiowania wyrażenia regularnego z tego doku

Wyrażenia regularne

  • Wartość domyślna: (.*) – nie modyfikuje kodu kreskowego
  • Usunięcie początkowych zer: ^0*(\d+)$
  • Usunięcie ukośnika (lub znaków specjalnych): (\d+)\/?(\d+) - znak „/” można zastąpić innym
  • Usunięcie początkowych zer i ukośnika: ^0*(\d+)\/?(\d+)
  • Usunięcie zer na początku i usunięcie cyfr kontrolnych: [0]{2}([1-9]{1}[0-9]{8})[\\d]{1}|[0]{3}([1-9]{1}[0-9]{7})[\\d]{1}|[0]{1}([1-9]{1}[0-9]{5})[\\d]{1}|(.* )
    • jeśli kod kreskowy ma długość 12 znaków, usuwa z początku zera i cyfrę kontrolną
    • jeśli kod kreskowy ma długość 11 znaków, usuwa z początku zera i cyfrę kontrolną
    • jeśli kod kreskowy ma długość 8 znaków, usuwa z początku zero i cyfrę kontrolną
    • jeśli nie spełnia żadnego z warunków, zwraca oryginalny ciąg znaków
  • Można definiować kody kreskowe z dodaniem przedrostka lub przyrostka do środka ciągu znaków
    • separatorem wyrażenia regularnego i sposobu zamiany jest paragraf §
    • (91)39[0]*([0-9]*)§$11C$2
      • okrągłe nawiasy określają grupę
      • $ i numer grupy reprezentuje rzeczywistą wartość w danej grupie
      • można następnie złożyć wynikowy ciąg znaków, w tym zamienić kolejność danych
      • poprzedni przykład generuje: 911C6551
  • Konkretne wyrażenia dla niektórych instancji

Pilzno

  • ([\d\w]+)[\/\-]?([\d\w]+) – usuwa znaki ukośnika i myślnika. Pozostawia cyfry i litery (litery używane w kartach pilzneńskich).

TSK - Trenčín

  • [0]{2}([\d]{9})[\d]{1} – Jeśli kod kreskowy ma 12 znaków i zaczyna się od dwóch zer, to są one obcinane i usuwana jest cyfra kontrolna. Czytniki tych kodów EAN13 automatycznie obcinają pierwsze zero – w rzeczywistości są to 3 zera, ale czytnik zwraca tylko 2.

TSK - Povážská knižnica

  • [0]*([\d]*) - różna liczba zer na początku kodu kreskowego, bez cyfry kontrolnej

ŠAVS

  • problematyczne kody: „°   žš+áí” – należy usunąć spacje
  • INC_NUMBER_MODIFIER_REGEX_PATTERN ustawione na ^\s*(\d+)$
  • BARCODE_MODIFIER_REGEX_PATTERN ustawione na  ^\s*(\d+)$

Starlib

  • [0]{1}([\d]{10})[\d]{1} - Problematyczne kody 039410319006 – odcięcie zera na początku i odcięcie cyfry kontrolnej.

Měk Znojmo albo Měk Třebíč

  • [0]{5}([\d]{6})[\d]{1}|(.*) - książki mają u nich 000000187352, a skanery odczytują 000001873528, więc trzeba odciąć 5 zer i cyfrę kontrolną.

UNIZA

  • ^0(\d{17}) - jeśli kod ma długość 18, to usuwa 0 na początku

Testowanie

  • W celu przetestowania wyrażenia regularnego w zakładce „System” znajduje się blok testowy, w którym zdefiniowane są używane kody kreskowe (EAN13, EAN8 ...) + można wprowadzić własne kody kreskowe (oddzielone średnikiem) do przetestowania.
  • Należy przetestować cały zestaw możliwych kodów kreskowych.

Gdzie się stosuje?

  • Wypożyczenia
    • Kod kreskowy
    • Kod kreskowy złożony
    • Numer czytelnika
  • Katalog serwisowy
    • Zakładka „Nr kodu/Nr przydziału”
    • Wyszukiwanie łączone → wyszukiwanie według kodu kreskowego