Zástupné znaky vo Worde 1. Čo to je - znaky so špeciálnym významom umožňujúce: -- vytvárať vyhľadávacie vzory (hľadám 5-ciferné číslo, akékoľvek slovo, ktoré sa opakuje viackrát za sebou,...) -- popisovať "nenapísateľné" znaky (hľadám koniec odstavca, zalomenie strany,...) -- používať časti nájdeného v nahrádzacom políčku (chcem všetky texty v zátvorkách upraviť tak, aby boli v hranatých zátvorkách) 2. Kde to je - V dialógu Hľadať aj v dialógu Nahradiť - Po vyvolaní dialógu kliknúť na tlačidlo "viac" a potom začiarknuť "používať zástupné znaky" - Potom ich už možno písať do vyhľadávacieho políčka 3. Popis najpoužívanejších zástupných znakov - Všetky príklady v tejto časti budú fungovať, len ak máte začiarknuté políčko "zástupné znaky" vo vyhľadávacom dialógu - príklady sú kvôli prehľadnosti zapisované v úvodzovkách ("") do vyhľadávacieho políčka ich píšte bez úvodzoviek 3.0 písmená abecedy a čísla - zapisujeme normálne a majú štandardný význam. 3.1 ľubovoľný znak Zástupný znak: ? Význam: používa sa na reprezentovanie jedného neznámeho znaku príklady: - "b?t" nájde trojice znakov byt, bit, b5t,... teda trojicu začínajúcu znakom b, končiacu znakom t a medzi týmito dvoma znakmi môže byť ľubovoľný znak - "a??j" nájde postupnosť 4 znakov začínajúcu na a a končiacu na j: ahoj, ahej, ale aj a j (? môže zastupovať aj medzeru) 3.2 jeden zo znakov Zástupný znak: [] (na slovenskej klávesnici pravý alt fg) význam: umožňuje hľadať "jeden zo znakov". Napríklad ak chceme hľadať trojznak b?ť kde na druhej pozícii chceme dovoliť len jeden zo znakov i alebo y, potom môžeme použiť výraz "b[iy]ť". Medzi znaky [] môžme písať aj rozsahy. Napríklad "[0-9]" hovorí, že hľadáme ľubovoľnú číslicu. Špeciálny význam má znak !, ktorý, (ak nasleduje bezprostredne za znakom [), funguje ako "nie". Teda ak chceme hľadať ľubovoľný trojznak, ktorý v strede nemá medzeru tak použijeme výraz "[! ]" príklady: - "[A-Za-z0-9 ]" hľadáme jeden zo znakov malej aj veľkej anglickej abecedy (pozor rozsah a-z žiaľ nezahŕňa diakritiku), číslicu alebo medzeru (pred znakom ] je aj medzera) 3.3 hranice slova zástupný znak: < začiatok > koniec (pravý alt a ,.) Význam: popisuje hranice slova. Pomôže nám teda, ak chceme hľadať slová nejakého tvaru. Predchádzajúci príklad a??j nám hľadal štvorice znakov, ktoré však nemuseli byť na začiatku slova. Použitím znakov hraníc slova toto môžeme zmeniť. príklady: - "<[aA][! ][! ]j>" hľadáme 4 znakové slová (v ktorých ani na druhom a treťom znaku nepripúšťame medzeru) začínajúce sa na veľké alebo malé a. - "<[A-Ha-h][1-8]:[A-Ha-h][1-8]>" hľadáme súradnicové popisy šachových ťahov a tolerujeme pritom veľké a malé písmená. Takže nájdeme a1:a3, ale aj B1:c3. 3.4 ľubovoľný reťazec zástupný znak: * význam: znak reprezentuje ľubovoľný reťazec ľubovoľnej dĺžky. príklady: - "" hľadáme ľubovoľné slovo začínajúce sa na a a končiace sa na j. Na dĺžku nekladieme žiadne obmedzenia (môže to byť aj, ale aj ahoj) 3.5 počet znakov zástupný znak: {} (pravý alt a bn) Význam: Umožňuje hľadať výrazy s definovanou dĺžkou. Medzi { a } môžeme napísať: - 2 čísla oddelené bodkočiarkou: definujeme dolnú a hornú hranicu pre dĺžku - bodkočiarka číslo: definujeme len hornú hranicu pre dĺžku - číslo bodkočiarka: definujeme len dolnú hranicu pre dĺžku Fungovanie azda najlepšie ozrejmia príklady: - "<[0-9]{6;6}>" hľadáme 6-ciferné čísla - "<[a-zA-Z]{1;}>" hľadáme slová pozostávajúce z veľkej a malej anglickej abecedy, ktoré pozostávajú aspoň z jedného znaku - "<[A-Z]?{1;}>" hľadáme slová, ktoré začínajú veľkým písmenom a pozostávajú aspoň z dvoch (ale môžu aj z viacerých) znakov. Poznámka: vyhľadávanie je "žravé", teda dĺžka nájdeného výrazu je vždy najväčšia možná. Napríklad ak máme v dokumente 10-krát za sebou písmeno a a vyhľadávame výraz "a{1;}" (teda slovo pozostávajúce z jedného alebo viacerých písmen a), potom bude výsledok vyhľadávania slovo pozostávajúce z 10 písmen a. 3.6 zapamätávanie častí výrazov Zástupný znak: () Význam: do zátvoriek môžme "obaľovať" časti vyhľadávacieho výrazu. V špeciálnych pamätiach budeme mať potom uložené výsledky vyhľadávania, s ktorými môžeme operovať v ďalšej časti vyhľadávacieho výrazu. Tieto "pamäte“ sa číslujú od 1 do 9 a k ich obsahu sa dostaneme vkladaním príslušnej číslice, pred ktorú predradíme znak \. Používať ich možno aj v políčku "Nahradiť". Príklady: - "(?{1;})\1" nájde ľubovoľne dlhý text, ktorý sa v dokumente opakuje dvakrát za sebou. Môže to byť slovo, veta, ale aj odsek alebo celá strana. Prvá časť výrazu je v zátvorkách, čo znamená, že výsledok sa nám automaticky uložil do "registra" 1. Ten sme za zátvorkou hneď použili. Použiť ho môžeme aj v políčku Nahradiť. Napríklad ak chceme z dokumentu vymazať všetko, čo sa v ňom vyskytuje viackrát za sebou (nielen dvakrát!) a ponechať to tam len raz, potom výraz trochu upravíme: - "(?{1;})\1{1;}" a do políčka "Nahradiť" napíšeme len "\1". Je dôležité uvedomiť si, že operátor {} je žravý. Vyskúšajte si výraz z tohto príkladu napr. na dokumente 0.txt. - "<$([0-9]{1;})>" vyhľadávame peňažné sumy zapísané v americkom tvare (znak meny a potom číslo) a v registri \1 si pamätáme sumu bez znaku $. Do nahrádzacieho políčka môžme napísať "\1$" čím prekonvertujeme zápis súm na taký, na aký sme zvyknutí v našich dokumentoch. - "<([1-9])([0-9]{2;})dkg>" vyhľadávame troj- alebo viacčíslia nasledované slovom dkg, teda zápis váhy niečoho v dekagramoch. V prvej pamäti si pamätáme prvú cifru a v druhej zvyšné cifry čísla. Do políčka Nahradiť môžeme napísať "\1,\2kg" čím hmotnosti vydelíme desiatimi teda prevedieme na kilogramy. Pracujeme len s číslami, ktoré majú 3 alebo viac cifier. Dvoj- a jednociferné čísla môže čitateľ vyriešiť ako cvičenie. 3.7 ďalšie jednoduché znaky - ^t : tabulátor - ^l : pevné zariadkovanie - ^13 : koniec odseku. V prípade, že chcete vkladať znak nového odseku cez políčko nahradiť, použite ^p. - ^m : zlom strany resp. sekcie 4. Cvičenia 4.1 Hľadanie palindrómov Súbor 1.txt obsahuje množstvo palindrómov teda takých slov (aj viet) ktoré sa dajú čítať aj od začiatku aj od konca (krk, anna,...). Skopírujte do súboru všetky 5-znakové palindromatické slová, ktoré sa nachádzajú v tomto texte. Použite na to jeden regulárny výraz. Súbor si uložte. Pomôcka: vo vyhľadávacom dialógu je aj políčko "označiť všetky výskyty...", po začiarknutí ktorého sa sprístupní tlačidlo "nájsť všetky výskyty". Po jeho aktivovaní budú označené všetky výskyty hľadaného výrazu, ktoré môžete naraz skopírovať do schránky. 4.2 redukcia viacnásobných výskytov Zoznam palindrómov, ktorý ste vyrobili v minulom cvičení obsahuje niektoré slová viackrát. Pomocou regulárneho výrazu zoznam upravte tak, aby v ňom bolo každé len raz. Pomôcka: položka triedenie v ponuke tabuľka by pri tejto úlohe mohla byť užitočná. 4.3 preklady slov Text 2.txt obsahuje k niektorým slovám v zátvorkách anglický preklad. Zátvorka s prekladom nasleduje bezprostredne za slovom (bez medzery). Text však obsahuje aj iné zátvorky, v ktorých je viacero slov a tie nie sú prekladom slov. Pomocou regulárneho výrazu vyrobte súbor slovnik.txt, ktorý obsahuje len dvojice slov. Každá dvojica je na samostatnom riadku. Druhým regulárnym výrazom upravte slovnik.txt tak, aby nebol preklad slova v zátvorkách, ale bol od pôvodného slova oddelený znakom rovná sa. Teda napríklad z riadku okno(window) vyrobte riadok okno = window Pomôcka: tentoraz žiadna. 4.4 matikár bordelár (alebo alkoholik?) Učitel matiky opravoval večer písomky a v súbore 3.doc je tabuľka, do ktorej si zapisoval ku každému menu počet bodov a známku. Všimnite si, ako je tabuľka pokazená a opravte ju. Pomôcka: Pri tejto úlohe by sa mohlo hodiť prekonvertovať tabuľku na text, kde budú jednotlivé bunky v riadku oddelené napríklad dvojbodkou (ponuka tabuľka/konvertovať/tabuľku na text). Aj opačná funkcia, teda konvertovať text na tabuľku, sa môže hodiť. 4.5 neporiadok v texte Súbor 4.txt obsahuje text, v ktorom sa z času na čas vyskytuje jedna veta, odsek alebo možno aj celá strana viackrát za sebou. Upracte tento text. 4.6 Hádanka Súbor 5.txt skrýva tajomstvo, ktoré možno odhaliť použitím regulárnych výrazov. Kľúčové sú písmená anglickej abecedy a . Pomôcka: už sa teším na maily a zlosovanie!