Regulární výrazy a jejich použití v LibreOffice

LibreOffice Vyhledávání pomocí zástupných znaků (regulárních výrazů) představuje mocnou zbraň při vyhledávání určitého textu v dokumentu. V tomto článku si ukážeme, jak je používat a jaké možnosti máte.   

Představte si, že hledáte v rozsáhlém dokumentu text, o němž víte, že sestává ze dvou malých písmen, jež se nacházejí na posledním řádku nějakého odstavce. Nevíte, která písmena to jsou, jen je chcete najít. Nebo jinak – víte, které to jsou, ale jsou v různých kombinacích a chcete je nalézt (a případně přepsat, tedy nahradit) hromadně.

Právě v takovýchto případech vám pomůže vyhledávání prostřednictvím regulárních výrazů.

Dohledaný výsledek hledání Dohledaný výsledek hledání

Co jsou to regulární výrazy

Regulárními výrazy rozumíme znaky (řetězce), s jejichž pomocí, jednoduše řečeno, můžeme vyhledávat určité části textu v dokumentu. Jsou to jakési značky, určující, jaká posloupnost znaků se vyhledá. Regulární jazyk je velmi propracovaný, část z něj lze využít i v LibreOffice.

Skutečná definice regulárních výrazů je mnohem složitější, najdete ji na Wikipedii.

Speciálním znakům (oněm „značkám“) se říká metaznaky (příkladem mohou být znaky +, *, .). Tyto znaky se mohou družit do skupin znaků. Důležitou skupinou metaznaků pak jsou kvantifikátory, jež určují počet výskytu určitého znaku před ním. Uveďme si, jaké kvantifikátory lze použít i v LibreOffice. Ve všech případech se rozumí, že daný znak se vyskytuje před daným zástupným znakem.

  • ?… hledaný znak se vyskytuje 0 až 1krát;

  • *… hledaný znak se vyskytuje alespoň 0krát;

  • +… hledaný znak se vyskytuje alespoň 1krát;

  • {m}… hledaný znak se vyskytuje právě m-krát;

  • {m,n}… hledaný znak se vyskytuje přinejmenším m-krát, nejvíce však n-krát;

  • {m,}… hledaný znak se vyskytuje minimálně m-krát; všimněte si, že pokud m = 0, lze použít „*“, pokud m = 1, jde o alternativu ke znaku „+“.

Dále lze vyhledávat pomocí typu hledaného řetězce:

[:alpha:]… vyhledává znak abecedy;

[:digit:]… vyhledává číslici;

[:alnum:]… kombinace předchozích možností, vyhledávání alfanumerických znaků;

[:space:]… vyhledává mezeru;

[:print:]… vyhledává tisknutelný znak;

[:cntrl:]… vyhledává netisknutelný znak;

[:lower:]… vyhledává malé písmeno (podmínkou je mít v okně Najít a nahradit zaškrtnutou možnost Rozlišovat velikost);

[:upper:]… vyhledává velké písmeno (podmínkou je mít v okně Najít a nahradit zaškrtnutou možnost Rozlišovat velikost).

Doplníme, že regulární znak „.“ vyhledává jakýkoliv znak, tedy číslici nebo písmeno, s výjimkou ručního zalomení řádku a odstavce.

Dále jsou možné kombinace pro hledání v rozmezí písmen abecedy:

[p-w]… vyhledá znak, který se nachází mezi p a w, včetně těchto okrajových;

[a-du-z]… vyhledá znaky nacházející se na otevřeném intervalu

Jak regulární znaky používat

Chcete-li vyhledávat pomocí regulárních výrazů, nestačí vám otevřít okno (resp. lištu) Najít, musíte otevřít okno Najít a nahradit ([Ctrl + h]). V tomto okně rozklikněte Ostatní možnosti a zaškrtněte pole Regulární výrazy. Poté lze do polí Najít a Nahradit psát regulární výrazy, ale rovněž i ty „běžné“, tedy alfanumerické znaky nacházející se v dokumentu. Jen je třeba se vyhýbat kolizím s regulárními znaky (např. „+“).

V tomto okně lze do vyhledávání prostřednictvím regulárních výrazů zapojit i Atributy textu či jeho Formát, což se leckdy může náramně hodit, zvláště při nahrazování – s pomocí regulárních výrazů si najdete nějaký řetězec, který jednoduše přepíšete na jiný a ještě mu dodáte patřičný formát.

V předchozí části jsme uvedli výrazy, pomocí nichž se dalo určit, co hledáme. Ale s pomocí regulárních výrazů lze také dohledat, kde daný řetězec hledáme. Doplňme tedy přehled možných regulárních výrazů:

  • ^. … vyhledá první znak odstavce;

  • ^… vyhledá znaky na začátku odstavce;

  • $… vyhledá znaky na konci odstavce;

  • ^$… vyhledá prázdný odstavec;

  • \t… vyhledá znak tabulátoru;

  • \xyz… vyhledá výraz, jenž začíná na písmena nacházející se za „\“;

  • \n… vyhledá ruční zalomení řádku, je-li použito v poli Najít; při umístění do pole Nahradit změní ruční zalomení řádku za odstavec.

Znaky lze samozřejmě řetězit; lze tak kombinovat různé možnost a více specifikovat hledaný řetězec.

Pokud byste například chtěli najít řetězec, který obsahuje slovo „libreoffice“ (jen si nejste jisti počtem „b“) a který je umístěn na začátku řádku v odstavci a za tímto slovem se nachází mezera a dvě číslice, mezi nimiž je tečka (bude to tedy název aplikace s číslem verze, např. libreoffice 5.4), zadáte do pole Najít toto:

^lib+reoffice[:space:][:digit:]{1}.[:digit:]{1}

Co tyto znaky znamenají?

^… hledaný řetězec se nachází na začátku odstavce.

+… počet znaků před tímto znakem (tedy „b“) je minimálně jeden.

[:space:]… za slovem „libreoffice“ je mezera.

[:digit:]{1}… za mezerou se nachází právě jeden číselný znak.

. … za číselným znakem se nachází tečka.

Hledání by se dalo ještě více specifikovat, pokud víte, že hledáte výraz „LibreOffice“, tedy s velkými písmeny „L“ a „O“ (počtem „B“ si stále nejste jisti). Pokud by se daný výraz vyskytoval v textu i s malými písmeny „l“ a „o“, pak by bylo třeba zaškrtnout pole Rozlišovat velikost (jinak nemá použití výrazů [:upper:] a [:lower:] smysl, v podstatě jen nahrazují tečku „.“, tedy znak pro jakékoliv písmeno).

^[:upper:]ib+re[:upper:]ffice[:space:][:digit:]{1}.[:digit:]{1}

Výše uvedený výraz vyhledá třeba i „LibbbbbreOffice 5.4“.

Pokud nevíte, kolik číslic je v hledaném řetězci použito, můžete si pomoci dvojím způsobem; buď takto:

^[:upper:]ib+re[:upper:]ffice[:space:][:digit:]+.[:digit:]+

kde „+“ značí jeden a více výskytů,

nebo zcela ekvivalentně

^[:upper:]ib+re[:upper:]ffice[:space:][:digit:]{1,}.[:digit:]{1,}

Zvlášť v tabulkách, převedených na formátovaný text s tabulátory, využijete vyhledávání právě pomocí nich. Připomínáme, že pro vyhledání tabulátoru stačí zadat „\t“. Tento výraz je také možno využít pro nahrazování, což se opět může hodit třeba v tabulkách.

A nakonec specialita: Představte si, že hledáte výraz „LibreOffice“, ale nevíte, zda je v textu použito v této podobě, anebo jako „Libre Office“. Jistě by stačilo do vyhledávání zadat jednoduše „Libre“ a řetězec se dohledá i bez nutnosti používat regulární výrazy. Ale předpokládejme, že si opět nejste jisti správnou podobou slova „např.: je „Libre“ nebo „Libbre“? Je „office“ nebo „ofice“?)a pro zjednodušení uvažujme jen takto jednoduchý příklad. V tomto případě lze použít regulérní znak „|“, který vyhledá znaky před svislítkem i za ním:

Libre|Office

tak dohledá jak LibreOffice, tak Libre Office.

Použití regulárních výrazů se může zdát složité, ale není tomu tak. Stačí mít po ruce seznam těch, které můžete využít, a pak je sázet do vyhledávacího pole. Uvidíte, že vám jejich použití ušetří hromadu práce.

Autor používá LibreOffice 5.4.

(Jako ve škole) Průměr: 2,00 | Hodnotilo: 4
 

Komentáře

user avatar Eduard Boldižár
Odpovědět
Regulární výrazy a jejich použití v LibreOffice
6. 09. 2017, 12:11:03
Pekný článok ;) Na regulárnych výrazov mám postavenú bakalárku, čiže je to moja blízka téma :)
user avatar Petr Valach
Odpovědět
Re:Regulární výrazy a jejich použití v LibreOffice
6. 09. 2017, 18:17:18
Ó děkuji, děkuji :-)
user avatar Albius
Odpovědět
AltSearch
7. 09. 2017, 12:53:33
Rozšírenie AltSearch od Tomáša Bílka poskytuje ešte väčšie možnosti hľadania a nahrádzania, a to aj vrátane regulárnych výrazov:
https://www.openoffice.cz/navody/rozsireni-v-openoffice-org-altsearch
http://mujweb.cz/macrojtb/
https://extensions.libreoffice.org/extensions/alternative-dialog-find-replace-for-writer
user avatar Petr Valach
Odpovědět
Re:AltSearch
7. 09. 2017, 19:32:02
AltSearch je fajn věc, ale s regulárními výrazy myslím neumí pracovat. A při hledání nejasného výsledku či při hromadném nahrazování se regulární výrazy nádherně využijí.
user avatar Martin Kmínek
Odpovědět
Re:AltSearch
12. 12. 2017, 12:36:15
AltSearch s regulárními výrazy pracuje. Pomocí nich formátuji (nastavuji jak odstavcové tak znakové styly) výpočetní protokoly.

Odpovědět

 

Nejsou podporovány žádné značky, komentáře jsou jen čistě textové. Více o diskuzích najdete v nápovědě. Diskuzi můžete sledovat pomocí RSS kanálu.

 
Petr Valach

Petr Valach

OpenOffice používám od roku 2004, od roku 2011 LibreOffice. Od roku 2009 píšu články pro OpenOffice.cz a LinuxEXPRES.cz.

 

Public Relations

Chtějte to, na co se můžete spolehnout

Přemýšlíte nad tím, co byste měli udělat pro to, aby na Vaše stránky zavítalo více návštěvníků? Tak to se můžete spolehnout na jedno velice efektivní řešení.

Pokračování ...


 
 
woo jaw demo hz