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 wyszukiwania (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", "dqm".
- 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 programie rozwiązaniu, albo wymagana będzie obecność przynajmniej jednego znaku 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 (czyli dopuszczony byłby ciąg "dom").
Biorąc pod uwagę wspomniane wyżej różnice w interpretowaniu wieloznacznika ogólnego (*) w poniższych przykładach:
- Zapytanie "*dom*" w niektórych programach zostanie dopasowane do słowa zawierającego 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 (znaki po prawej od pierwszego wieloznacznika ogólnego nie będą brane pod uwagę).
- Zapytanie "d*m" w niektórych programach umożliwi odnalezienie wszystkich, trójznakowych lub dłuższych słów zaczynających się literą "d" i kończących literą "m", np. "dom", "dym", ale także "doom"; w innych programach odnaleziony zostanie także dwuliterowy wyraz "dm"; w jeszcze innych zapytanie "d*m" będzie równoważne zapytaniu "d*", czyli zostanie dopasowane do wszystkich wyrazów rozpoczynających się od znaku "d".
[edytuj] Zobacz też
[edytuj] Linki zewnętrzne
- RFC 4592 – Znaczenie wieloznaczników w DNS
- Wildcard DNS - Wildcard w dynamicznych serwisach PHP