Wieloznacznik
Z Wikipedii
Wieloznacznik, symbol maski, znak globalny, metaznak, symbol wieloznaczny, znak wieloznaczny (ang. wildcard) – nazwa symbolu stosowanego w informatyce w procedurach wyszukiwania ciągów znaków w dokumentach tekstowych i w zbiorach informacji o charakterze tekstowym. Wieloznaczniki używane są do konstruowania wzorców wyszukania (tzw. masek), w których symbol wieloznaczny zastępuje jeden lub więcej znaków pisarskich (tj. nie tylko litery i cyfry, ale także inne znaki występujące w tekstach – interpunkcyjne, matematyczne itp.).
Procedury wyszukiwania ciągów znaków wykorzystywane są w programach do edycji lub przeglądania tekstów (przeszukiwanie niesformatowanych i sformatowanych dokumentów tekstowych), w przeszukiwaniach baz danych oraz w pracy z danymi systemu operacyjnego (np. przy wyszukiwaniu plików, procesów etc.). Bardziej zaawansowane programy pozwalają na stosowanie wyrażeń regularnych, korzystające ze znacznie szerszego zbioru metaznaków i o znacznie większych możliwościach od zwykłych wieloznaczników.
Spis treści |
[edytuj] Rodzaje wieloznaczników
W większości przypadków używane są dwa wieloznaczniki:
- wieloznacznik lokalny – zastępujący pojedyncze wystąpienie dowolnego znaku (do jego oznaczania najczęściej stosowany jest znak zapytania (?)),
- wieloznacznik ogólny – zastępujący dowolną liczbę dowolnych znaków (do jego oznaczania najczęściej stosowany jest znak gwiazdki (*)).
Wieloznacznik ogólny, w zależności od implementacji (zastosowania w konkretnym rozwiązaniu), obok zastępowania jednego lub więcej znaków może dopuszczać także przypadek braku znaku w ogóle (zerową liczbę wystąpień znaków). Wieloznacznik lokalny zazwyczaj oznacza dokładnie jeden znak, w związku z czym nie obejmuje przypadku braku znaku.
Wzorce wyszukania (maski) konstruowane są jako kombinacje symboli wieloznacznych i zwykłych znaków. We wzorcu może być użyty pojedynczy znak wieloznaczny, ale może być ich użytych kilka, co pozwala na budowanie bardziej skomplikowanych masek (np. "??cde*").
Wieloznacznik ogólny traktowany jest w nieco odmienny sposób w różnych rozwiązaniach. W niektórych przypadkach zastępuje wszystkie znaki na prawo od pozycji wieloznacznika, nie ma więc sensu podawania czegokolwiek na prawo od wieloznacznika. Jednak w większości współczesnych programów jest traktowany dosłownie, to znaczy zastępuje dowolne znaki, a wpisane po nim znaki muszą również wystąpić w tekście, czyli "coś*ktoś" należy rozumieć jako "coś" tu dowolne znaki w dowolnej ilości "ktoś".
[edytuj] Wyszukiwanie i ich wyniki
Oddzielną kwestią, bezpośrednio zależną od środowiska lub programu, w którym przeprowadzane jest wyszukiwanie, jest "jednostka", w obrębie której dopasowywany jest wzorzec wyszukania, oraz "jednostka" zwracana po znalezieniu ciągu znaków pasującego wzorca. Ponieważ możliwości określania granic/wielkości obydwu "jednostek" są duże i bezpośrednio zależą od środowiska, w którym przeprowadzane jest wyszukiwanie, a ponadto w wielu przypadkach można je zmieniać w zależności od własnych potrzeb, trudno jest udzielić prostej odpowiedzi w tej kwestii.
Generalnie w edytorach tekstów oraz w czytnikach dokumentów tekstowych jednostką dopasowania i jednostką zwracaną zazwyczaj jest wiersz (ciąg znaków ograniczony dwoma kolejnymi znakami końca wiersza) lub słowo (ciąg znaków ograniczony dwoma kolejnymi separatorami słów, zwykle są to spacja, znak tabulacji, znak końca wiersza, znaki interpunkcyjne, nawiasy etc.). W wyszukiwaniu plików i katalogów dopasowanie następuje w obrębie nazwy pliku lub katalogu, zwracana jest albo sama nazwa pliku lub katalogu, albo nazwa wraz z dodatkowymi informacjami o pliku lub katalogu, a więc w pewnym sensie wiersz. Dla większości systemowych narzędzi do wyszukiwania ciągów znaków działających w trybie znakowym dopasowanie przeprowadzane jest w obrębie wiersza i po znalezieniu ciągu zwracany jest wiersz. W przeszukaniach baz danych dopasowanie przeprowadzane jest w obrębie wskazanego do przeszukiwania pola (lub pól), zwracane są określone pola rekordu lub cały rekord.
[edytuj] Przykłady
- Zapytanie "dom?" pozwoli znaleźć wszystkie czteroznakowe słowa rozpoczynające się ciągiem znaków "dom" i kończące się dowolnym czwartym znakiem, np. "domu", "domy".
- Zapytanie "d?m" pozwoli znaleźć wszystkie trójznakowe słowa o podanym pierwszym i ostatnim znaku oraz zawierające jeden, dowolny znak w miejscu znaku zapytania, np. "dom", "dym", "dam".
- Zapytanie "dom*" pozwoli znaleźć wszystkie słowa rozpoczynające się ciągiem znaków "dom" i mające dowolne zakończenie. W zależności od przyjętego w danym środowisku rozwiązaniu, albo wymagana będzie obecność przynajmniej jeden znak po podanym jawnie początku ciągu, np. "domu", "domem", "domowi", "domowy", albo dopuszczony będzie brak jakiegokolwiek znaku po jawnie podanym początku ciągu. W drugim przypadku prawidłowymi ciągami będą "dom", "domu", "domem", "domowi", "domowy".
Biorąc pod uwagę wspomniane wyżej różnice w interpretowaniu wieloznacznika ogólnego (*) w poniższych przykładach:
- Zapytanie "*dom*" w niektórych środowiskach znajdzie słowa zawierające jeden lub kilka znaków na początku i na końcu ciągu "dom", np. "domu", "domem", "domowi", "domowy", ale także "przydomowy", w innych znajdzie wszystkie słowa (zadziała pierwszy wieloznacznik ogólny).
- Zapytanie "d*m" w niektórych środowiskach znajdzie wszystkie, trzyznakowe lub dłuższe, słowa zaczynające się literą "d" i kończące literą "m", np. "dom", "dym", ale także "doom"; w innych środowiskach znajdzie także dwuliterowy wyraz "dm"; w jeszcze innych zapytanie "d*m" znajdzie wszystkie dowolnej długości wyrazy rozpoczynające się od znaku "d" (wtedy równoważne jest zapytaniu "d*").