Manažerská informatika 3MA381
Domů  |  3MA112  |  3MA191  |  3MA381  |  3MA382  |  3MA481   
Osnova cvičení Úvodní informace Harmonogram prezentací Hodnocení Podklady ke cvičením Teorie Domácí cvičeníExtra aktivity Odkazy

Vyhledávání textu pomocí speciálních znaků

Vyhledávání obecně

Asi každý se poměrně často setkáváme s tím, že potřebujeme v nějakém obsáhlejším dokumentu vyhledat jen určité informace nebo například potřebujeme zaměnit jedno slovo za jiné a podobně. V takovém případě určitě přijde vhod takovou činnost co nejvíce zjednodušit. Pokud jsme schopni dané slovo nebo objekt dostatečně dobře popsat tak by to neměl být problém. Takovým popisem by měl být jednoznačný výraz neboli vzor. Pokud bychom vyhledávali nějaké určité slovo např. dnes a chtěli ho nahradit za např. zítra, pak by bylo vyhledávání velmi jednoduché. Většina programů nám však nabízí možnosti mnohem širší a to s pomocí různých zástupných znaků, pomocí kterých můžeme psát výrazy nebo vzory pro vyhledávání.

Neměl by tak být problém například zaměnit datum ve formátu 3/16/2007 na 2007-03-16 či na 3.16.2007. Resp. všechny data ve vybraném dokumentu.

Možnosti vyhledávání ve Wordu

Word nabízí široké možnosti vyhledávání (a nahrazování) v textu. Můžeme vyhledávat nejen konkrétní text, ale i jeho atributy – formát písma, odstavce, nastavení tabulátorů, jazyka, rámečku, styly a zvýraznění. Kromě toho nám Word nabízí i možnosti rozlišovat velikost písma, hledat pouze celá slova, v případě anglického jazyka vyhledávat foneticky nebo všechny tvary slova. Word se svým způsobem vyhledávání poměrně dost liší od ostatních programů. Používá totiž takzvané divoké karty (wildcards) namísto metaznaků, což je nestandardní a nekompletní implementací regulárních výrazů.

Metaznak – znak nebo kombinace znaků, které mají speciální význam, pokud jsou použity k vyhledávání pomocí zástupných znaků.

Poznámka: vyhledávací algoritmus Wordu používá takzvané "lazy" neboli "líné" vyhledávání. To znamená, že prohledává text a jakmile nalezne vyhovující řetězec, hledání zastaví. Naopak většina vyhledávacích nástrojů Unixu je takzvaně "greedy" neboli "chamtivé" – snaha najít co nejvíce textu.

Vyhledávání pomocí speciálních a zástupných znaků

V textu samotném lze vyhledávat nejen slova či souslednost znaků, ale i například netisknutelné znaky a grafické objekty. Možnosti vyhledávání v textu nabízí Word opravdu široké a to pomocí speciálních a zástupných znaků.

Speciální znaky: Zástupné znaky:
^p znak konce odstavce ? libovolný znak
^t znak tabulátoru [-] znak z intervalu
^? libovolný znak < začátek slova
^# libovolná číslice > konec slova
^$ libovolné písmeno () výraz
^^ znak stříšky [!] negace
^% znak oddílu {;} počet výskytů
^v znak odstavce @ předcházející jeden nebo více znaků
^n zalomení sloupce * žádný nebo více znaků
^+ dlouhá pomlčka \ před zástupným symbolem
^= krátká pomlčka [] jeden ze znaků
^e značka vysvětlivky    
^d pole    
^f značka poznámky pod čarou    
^g grafický objekt (pouze vložený)    
^l ručně zadaný konec řádku    
^m ručně zadaný konec stránky 1    
^~ pevná pomlčka    
^s pevná mezera    
^- volitelné rozdělení    
^b konec oddílu    
^w prázdný znak (mezera)    
^a komentář 2    

Tabulka 1: Speciální a zástupné znaky

1 pokud je současně zapnuta i volba "Použít zástupné znaky" vyhledá a nahradí také konce oddílů
2 nefunguje ve zobrazení Rozložení při tisku (pouze Osnova a Normálně)

Nahoru

Vyhledávání ve Wordu se provádí zapsáním vzoru vyhledávaného řetězce do pole Hledat v dialogovém okně Najít.

Většinu jednodušších výrazů lze ve Wordu "naklikat" přímo – po stisknutí tlačítka Více a následně Speciální, resp. po zaškrtnutí Použít zástupné znaky – nabídka Speciální po zaškrtnutí změní svůj obsah na zástupné znaky.

Jednodušší, rychlejší a pro většinu neelementárních výrazů i nevyhnutelné, je zapisovat výrazy přímo z klávesnice. Zde však můžeme narazit na problém – některé klávesy na klávesnici nenalezneme, nebo nám nejdou napsat. Záleží totiž na nastavení rozložení kláves dané klávesnice. Jen česká klávesnice nám nabízí tři možnosti rozložení klávesnice:České, České (QWERTY) a České (programátorské).

TIP: Pokud chcete upravit rozložení klávesnice, jděte do nabídky StartOvládací panelyMístní a jazykové nastavení – karta Jazyky – v oddílu Jazyky a služby pro zpracování textu zvolte tlačítko Podrobnosti – karta Nastavení. Zde můžete zvolit výchozí jazyk a jeho rozložení klávesnice popřípadě přidávat nebo odebírat jazyky a různé rozložení klávesnic. Ke stejnému dialogovému oknu se také dostanete přes Panel jazyků na systémové liště (taskbar) Windows.

Přesto může být zadávání speciálních znaků tímto způsobem nepohodlné. Přepínání rozložení klávesnic se vyhneme, pokud budeme zadávat znaky pomocí pravé klávesy ALT a příslušného kódu znaku na numerické klávesnici.

TIP: Zde je stručný přehled zkratek pro zadání znaků potřebných pro vyhledávání ve Wordu:

ALT+60 ALT+91 [ ALT+94 ^
ALT+62 > ALT+92 \ ALT+123 {
ALT+64 @ ALT+93 ] ALT+125 }

Tabulka 2: Klávesové zkratky pro některé znaky

Více znaků naleznete v kompletní tabulce.

Nahoru

Příklady použití zástupných znaků

Zde je několik elementárních příkladů použití zástupných znaků:

*

Asi nejznámější a nejpoužívanější zástupný znak je * - žádný nebo libovolný počet znaků
vzor led* najde řetězce led, lední, ledový,…
vzor *led* najde řetězce led, lední, ledový, poledne, koleda,…
vzor b*y najde řetězce by, soby, bylo, buly,…

?

Dalším obecně známým zástupným znakem je ? – právě jeden libovolný znak
vzor b?t najde řetězce bít, být, byt, bot,…
vzor byl? najde řetězce byla, bylo, byli,…

@

Zatímco znak * slouží pro 0 – ∞ (nekonečně) znaků a ? pro právě jeden znak, @ slouží pro nalezení jednoho nebo více výskytů předchozího znaku nebo výrazu v řetězci
vzor pol@a? najde řetězce polar, pollan,…

<>

Znaménka nerovnosti lze použít jako označení začátku resp. konce slova; tyto zástupné znaky není nutné zadávat v páru
vzor <mezi najde slova začínající na mezi, mezitím, mezinárodní,…
vzor kých> najde slova končící na kých, velkých, fyzických,…

[]

Hranaté závorky slouží k vyhledávání některého ze znaků, které do nich zapíšeme; tyto zástupné znaky je nutné vždy zadávat v páru
vzor b[uo]k najde slova buk, bok nikoliv býk, brk

[-]

Hranaté závorky slouží také k vyhledávání intervalu znaků; bere se zde v úvahu posloupnost znaků tak, jak jsou za sebou řazena v abecedě
vzor o[a-n]a najde slova oba, oka, ona, nikoliv osa,
jak už bylo popsáno výše, rozlišuje Word malá a velká písmena – toho lze využít i zde
vzor [A-Ž] najde jakékoliv velké písmeno
vzor [a-ž] najde jakékoliv malé písmeno
vzor [A-ž] najde jakékoliv písmeno
vzor [0-9] najde jakoukoliv číslici
vzor [13579] najde jakoukoliv lichou číslici
vzor [A-ž0-9] najde jakékoliv písmeno nebo číslici (Word v tomto případě chybně zahrne do výsledku vyhledávání i hranaté a složené závorky a některé další znaky)

[!]

Vykřičník uzavřený do hranatých závorek najde všechny znaky, kromě těch, které jsou spolu s vykřičníkem uzavřené do těchto hranatých závorek
vzor o[!b]a najde slova oka, ona, osa nikoliv oba
vzor [!A-Ž] najde vše kromě velkých písmen

() a \n

Kulaté závorky slouží pro seskupování logických celků v rámci vzoru tam, kde chceme například vyhledat dvě a více slova a následně zaměnit jejich pořadí; tyto zástupné znaky je nutné vždy zadávat v páru
vzor (dlouho) (psát) zadaný do pole Najít a vzor \2 \1 zadaný do pole Nahradit za vyhledá výskyty sousloví "dlouho psát" a zamění je za "psát dlouho"

Najít a nahradit - prohození slov

Záměna pořadí slov "dlouho" a "psát"

\

Zpětné lomítko nám pomůže tam, kde vyhledáváme pomocí zástupných znaků, ale zároveň potřebujeme vyhledat některý ze zástupných znaků – tedy některý ze znaků {, }, [, ], <, >, (, ), -, @, ?, !, *, \; navíc se doporučuje uzavřít takovou kombinaci ve vzoru do hranatých závorek
tedy [\*] nebo [\?] nebo i [\\]

{n}, {n;} a {n;m}

Složené závorky slouží k vyhledávání vícenásobného výskytu znaku nebo znaků; hledaný vzor tentokrát nezapisujeme do závorek, ale před; v závorkách určujeme počet opakování, minimální počet opakování, popřípadě interval počtu opakování
vzor 0{2} vyhledá právě dvě nuly těsně za sebou
vzor 0{2;} vyhledá právě dvě nebo více nul těsně za sebou
vzor 0{2;4} vyhledá dvě až čtyři nuly těsně za sebou

^

Caret nebo také stříška slouží jako úvodní znak pro zapsání různých netisknutelných a specifických znaků nebo přímo jednotlivých znaků pomocí kódu znaku
vzor ^p tedy najde konec odstavce (paragraph)
vzor ^t najde znak tabulátoru (tabulator)
vzor ^e najde znak vysvětlivky (explanatory note)
vzor ^32 najde znak mezery
vzor ^80 najde velké písmeno P
vzor ^94 najde znak ^
atd.

Nahoru

Specifické kombinace syntaxí

Specifická syntaxe vzoru nastává v případě, že chceme použít speciální a zástupné znaky v kombinaci. V takovém případě je třeba substituovat speciální znaky za kódy těchto znaků.

zástupné kódy:
^13 znak konce odstavce
^9 znak tabulátoru
^94 znak stříšky
^14 zalomení sloupce
^2 značka poznámky pod čarou
^1 grafický objekt (pouze vložený)
^11 ručně zadaný konec řádku
^32 prázdný znak (mezera)
^5 komentář 1
^19 { u zobrazeného kódu pole 2
^21 } u zobrazeného kódu pole 2
^c obsah schránky Windows 3
^& obsah rozvíracího pole Najít 3
^12 konec stránky nebo oddílu (při nahrazení se vloží konec stránky)
^### znak ASCII
^0### znak ANSI

Kódy některých znaků

1 nefunguje ve zobrazení Rozložení při tisku (pouze Osnova a Normálně)
2
resp. najde celé pole
3 kódy těchto polí lze zadat pouze do pole "Nahradit za"

Pro vyhledávání více po sobě následujících konců odstavců ¶ je tedy potřeba zadat vzor ve tvaru ^13{2;}.

K dalším znakům, které je při kombinaci se speciálními znaky potřeba substituovat kódem patří například značka poznámky pod čarou ^2, pole kódem ^19 (pole musí být přepnuta do stavu, kdy je zobrazen kód pole).

Nahoru

Možná úskalí

Při vyhledávání a zvláště při nahrazování znaků pomocí zástupných kódů se vystavujeme riziku nestandardního chování Wordu. Podívejte se například na tento dokument. Původně v něm bylo 10 odstavců. Vícenásobné konce odstavců byly pomocí ^13{2;} nahrazeny za jeden znak konce odstavce. Na první pohled vypadá dokument tak, jak jsme si představovali, ale při pohledu do vlastností dokumentu se dočkáme nemilého překvapení – v dokumentu není ani jeden odstavec!

Nestandardní chování Wordu při nahrazování znaků

Nestandardní chování Wordu při nahrazování znaků

Samotná statistika a neexistující odstavce by nám až tak moc vadit nemusely, ale mají vliv na následné úpravy dokumentu.

Nahoru

Vyhledávání znaků, které nenalezneme na klávesnici

V případě, že hledáme nějaký znak, který není na běžné klávesnici, pak máme dvě možnosti:

  1. Najít daný znak v textu a zkopírovat ho do pole Najít
  2. Vložit znak do pole Najít pomocí klávesové zkratky

Pokud nevíme, jakou má námi hledaný znak klávesovou zkratku tak to nelépe zjistíme na mapě znaků. Tu nalezneme těmito způsoby (platí pro standardní instalaci Windows XP):

  1. Přímo ve složce C:\WINDOWS\system32\ soubor charmap.exe
  2. V nabídce Start – Programy – Příslušenství – Systémové nástroje – Mapa znaků
  3. Nejjednodušší cesta: klávesová zkratka WIN+R, zapište charmap, ENTER

Například pro značku © - copyrightu je to pravý ALT+0169.

Mapa znaků

Klávesová zkratka pro znak copyright v mapě znaků

Nahoru

Příklady k procvičení

Dejme tomu, že máme zdrojový dokument, ve kterém potřebujete udělat některé změny. Použijte funkci Najít a nahradit s pomocí speciálních a zástupných symbolů.

Všechna jména v první části dokumentu převeďte na styl Příjmení, Jméno

Najít a nahradit - prohození slov

Jak by vypadala syntaxe pro případ, že by se v seznamu objevovala jak jména s křestním jménem a příjmením tak i jména s několika křestními jmény a příjmením, jak je tomu v druhé části ukázkového dokumentu?

Zde můžeme využít toho, že jména jsou jednotlivě v odstavcích - za příjmením každé osoby následuje znak konce odstavce.

Najít a nahradit - odstavce

V třetí části je použito k zarovnání textu mezer. Vhodnější by bylo použití tabulátorů, případně převod do tabulky. Zaměňte proto všechny vícenásobné výskyty mezer za jeden tabulátor.

Najít a nahradit - mezery za tabulátor

V dokumentu se zadáním jsou řádky se zadáním úkolů číslovány ručně a písmo je normální text odstavce. Jediným rozlišovacím znakem je, že před i za každým řádkem se zadáním je vložen pro optické odsazení textu konec odstavce. Zaměňte tyto řádky za nadpisy druhé úrovně. Pro názornost můžeme použít například značku nadpisu druhé úrovně v HTML - tag <H2>. Samozřejmě je možné použít jakoukoliv jinou kombinaci znaků, o které jsme si jisti, že se v textu nevyskytuje.

Při hledání budeme muset provést nahrazení textu ve dvou krocích.

1. krok:
Hledáme ^13{2}([!^13]@^13)^13 a nahradíme za ^p<H2>\1

Najít a nahradit - Pseudonadpisy za nadpisy

2. krok:
Ve druhém kroku již stačí jen najít výskyt textu mezi <H2> a koncem odstavce a změnit formát stylu na nadpis druhé úrovně.

Najít a nahradit - Pseudonadpisy za nadpisy - 2.krok

Posledním úkolem je nahradit v chemických vzorcích všechna čísla dolním indexem úkol bude zřejmě nutné opět provést ve dvou krocích.

1. krok
Vyhledáme taková čísla, před jimiž je písmeno a pomocí nahrazení dosadíme před i za každou skupinku čísel nějaký tag nebo kombinaci znaků.

Najít a nahradit - index

2. krok:
Nahradíme dvojice tagů s čísly mezi za osamocené číslo formátované jako dolní index

Najít a nahradit - index - 2.krok
Nahoru

Poznámky

Ve Wordu nezáleží na tom, zda píšeme zástupné znaky rovnou z klávesnice nebo pomocí klávesové zkratky přes levý ALT + číslo z numerické klávesnice. Znak \ je tedy ekvivalentní s ^92 a s ALT+92.

Další zdroje informací

Nahoru

© 2007–2013 Miroslav Lorenc

Převzetí, publikování, kopírování, či jiné užití než pro osobní potřebu je možné pouze s písemným svolením autora.