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 hľadať a nahradiť
office 2010:
- najjeddnoduchšie cez dialóg hľadať a nahradiť (ctrl+h) z ktorého sa potom prepnúť na záložku vyhľadávania (po záložkách vrámci okna s vyhľadávaním, nahrádzaním a záložkou "choď na" sa prepínajte skratkami ctrl+pageup a ctrl+pagedown)
- 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. Vyhľadávanie nieje žravé, teda vyhodnocovanie výrazu sa zastaví hneď ako sa dá.
príklady:
- "<a*j>" 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) Ak sa však v dokumente vyskytuje slovo ahojjjjjjj, tak výraz popisuje len slovo ahoj, pretože vďaka "nežravosti" sa vyhodnocovanie zastaví, hneď ako je výraz splnený.
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. Žravosť však nefunguje spoľahlivo, hlavne na komplikovanejších textoch. K nefunkčnostiam sa vrátime v ďalšej časti.
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 2 krát za sebou a ponechať to tam len raz, potom budeme hľadať:
- "(?{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 zastupne_0.txt. Po tom, ako si overíte, že žravosť naozaj funguje (čo konkrétne funkčnú žravosť dokazuje?), vyskúšajte obsah v súbore zdvojiť, aby ste dosiahli to, že v súbore budú 4 rovnaké riadky. Ako by mala žravosť fungovať na takto upravenom dokumente? Čo je na nej zlé?
- "<$([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
- \: použite ak chcete vypnúť význam zástupného znaku. Napríklad ak chceme hľadať reťazec a*b, potom musíme napísať a\*b, aby sme vypli význam zástupného znaku *. Ak chceme vyhľadávať znak \, píšeme ho 2 krát.
4. Cvičenia
4.1 Hľadanie palindrómov
Súbor zastupne_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 office 2003: 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.
Office 2010 síce umožňuje tak isto vyznačiť všetko čo spĺňa hľadaný výraz, s označením sa potom ale žiaľ nedá nič robiť (nieje ho možné kopírovať, preštýlovávať,...). Môžeme ale použiť dialóg hľadať a nahradiť, v ktorom všetok text spĺňajúci výraz naštýlujeme nejakým štýlom a všetok text naštýlovaný nejakým štýlom už môžeme kopírovať. Napríklad chceme naštýlovať všetky jednopísmenkové slová v texte, aby sme ich mohli vymazať. Urobíme to takto:
- Vyvoláme dialóg hľadať a nahradiť (ctrl+h)
- Stlačíme tlačidlo viac a začiarkneme použiť zástupné znaky.
- do políčka hľadať napíšeme text "<(?)>" (bez uvodzoviek)
- Do políčka nahradiť napíšeme text "\1"
- Z políčka nahradiť sa tabulátorom pretabujeme (alebo klikneme) na tlačidlo formát, rozbalíme a aktivujeme tlačidlo štýl...
- V zozname štýlov vyberieme ľubovoľný znakový štýl (otázka pre premýšľavého čitateľa: prečo musí byť znakový?) ktorý v texte nepoužívame na nič iné, môžeme si na to štýl aj vytvoriť
- Nakoniec stlačíme tlačidlo Nahradiť všetko
- Teraz máme všetky jednoznakové slová označené štýlom ktorý sme vybrali a takto označený text už môžeme hromadne kopírovať, upravovať,...
poznámka: Tlačidlo formát ktoré sa nachádza v dialógu hľadania a nahradenia funguje na záložke pre nahrádzanie trochu špeciálne. Nastavujeme ním formátovanie toho z políčok "hľadať" a "nahradiť", v ktorom bol naposledy kurzor. Teda používatelia čítačov obrazovky sa k nemu prepracovávajú tabulátorom alebo shift+tabulátorom v závislosti od toho, pre ktoré z dvoch políčok chcú formátovanie nastavovať. Ak by sme chceli nastaviť formátovanie pre políčko "hľadať čo", tak nemôžme použiť tabulátor, pretože na ceste k tlačidlu formát by sme prechádzali cez políčko "nahradiť" tak že keď by sme na tlačidlo formát kurzorom prišli, platilo by, že to z políčok "hľadať čo" a "nahradiť čím" ktoré malo fokus naposledy bolo políčko nahradiť čím.
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 (office 2003), resp v skupine odsek na záložke domov (office 2010) by pri tejto úlohe mohla byť užitočná.
4.3 preklady slov
Text zastupne_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 zastupne_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 (office 2003: ponuka tabuľka/konvertovať/tabuľku na text, office 2010: po vyznačení tabuľky pribudne záložka na ribbone). Aj opačná funkcia, teda konvertovať text na tabuľku, sa môže hodiť.
4.5 neporiadok v texte
Súbor zastupne_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 zastupne_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!