29Jun

Ako používať základné regulárne výrazy na lepšie vyhľadávanie a ušetriť čas

click fraud protection

Či už hľadáte s programom Grep alebo hľadáte programy, ktoré vám môžu dávkovo premenovať súbory, pravdepodobne ste sa pýtali, či je jednoduchší spôsob, ako dostať svoju prácu. Našťastie existuje a nazýva sa to "regulárne výrazy".

( Comic from XKCD.com)

Čo sú regulárne výrazy?

Regulárne výrazy sú výrazy naformátované veľmi špecificky a môžu mať mnoho rôznych výsledkov. Tiež známe ako "regex" alebo "regexp", sú primárne používané pri vyhľadávaní a pri vytváraní názvov súborov. Jeden regex sa môže použiť ako vzorec na vytvorenie množstva rôznych možných výstupov, z ktorých sa všetky hľadajú.Prípadne môžete špecifikovať, ako by mala byť pomenovaná skupina súborov zadaním regexu, a softvér sa môže postupne presúvať na ďalší zamýšľaný výstup. Týmto spôsobom môžete premenovať viacero súborov vo viacerých priečinkoch veľmi jednoducho a efektívne a môžete prejsť nad rámec jednoduchého číslovacieho systému.

Pretože použitie regulárnych výrazov závisí od špeciálnej syntaxe, musí byť váš program schopný čítať a analyzovať.Mnoho premenovanie programov dávkový súbor pre Windows a OS X majú podporu pre regexps, rovnako ako na platforme vyhľadávanie GREP nástroje( ktoré sme sa dotkli v našej Bash skriptovanie pre začiatočníkov Guide) a AWK príkazového riadku nástroj pre * Nix. Navyše ich používajú mnohí alternatívni správcovia súborov, spúšťače a vyhľadávacie nástroje a majú veľmi dôležité miesto v programovacích jazykoch ako Perl a Ruby. Iné vývojové prostredia ako. NET, Java a Python, ako aj nadchádzajúca C ++ 11, poskytujú štandardné knižnice pre používanie regulárnych výrazov. Ako si viete predstaviť, môžu byť naozaj užitočné, keď sa snažíte minimalizovať množstvo kódu, ktorý ste vložili do programu.

instagram viewer

Poznámka o úteku znakov

Skôr než vám ukážeme príklady, radi by sme niečo uviedli. Budeme používať shell bash a grep príkaz, aby sme vám ukázali, ako aplikovať regulárne výrazy. Problém je v tom, že niekedy chceme použiť špeciálne znaky, ktoré je potrebné preniesť do grep a bash shell bude interpretovať tento znak, pretože shell ho používa rovnako. Za týchto okolností musíme tieto znaky "uniknúť".To môže byť mätúce, pretože toto "úteku" znakov sa vyskytuje aj v regexpsoch. Napríklad, ak chceme tento výraz zadať do grep:

\

to musíme nahradiť:

\\\ &

Každý špeciálny znak má jedno spätné lomítko. Prípadne môžete použiť aj jednoduché úvodzovky:

'\'

Jednotlivé úvodzovky hovoria, že bash NIE interpretovať to, čo je vnútri. Kým sme požadovali tieto kroky, aby sme mohli preukázať pre vás, vaše programy( najmä GUI-založené) často nebude vyžadovať tieto ďalšie kroky. Ak chcete, aby veci boli jednoduché a jednoduché, skutočný regulárny výraz vám bude poskytnutý ako citovaný text a na obrazovke obrazovky príkazového riadku uvidíte únikovú syntax.

Ako sa rozširujú?

Regexps sú naozaj stručné spôsoby, ako uvádzať termíny tak, aby ich počítač mohol rozšíriť do viacerých možností.Poďme sa pozrieť na nasledujúci príklad:

tom [0123456789]

hranatých zátvorkách - [a] - povie rozobrať motor, ktorý to, čo je vo vnútri, môže byť akýkoľvek jeden znak použitý tak, aby zodpovedala.Čokoľvek sa nachádza v týchto zátvorkách sa nazýva znaková sada.

Takže, ak sme mali obrovský zoznam položiek a my sme používali tento regulárny výraz hľadať tieto termíny by byť uzavreté:

  • tom
  • tom0
  • Tom1
  • tom2
  • tom3

a tak ďalej. Nasledujúci zoznam však NEBUDE zodpovedať a tak by sa vo vašich výsledkoch nezobrazoval: rajčiak

  • ;regex neobsahuje žiadne písmená po "tom"
  • Tom;v regexu sa rozlišujú veľké a malé písmená!

Môžete tiež zvoliť vyhľadávanie s periódom( .), Ktorý umožní akúkoľvek prítomnú znak, pokiaľ je prítomný znak.

Ako vidíte, skomprimovanie s

. tom

nevyvolalo podmienky, ktoré mali na začiatku iba "tom".Dokonca sa objavili aj "zelené paradajky", pretože priestor pred "tom" sa považuje za znak, no pojmy ako "tomF" nemali na začiatku charakter, a preto boli ignorované.

Poznámka: Predvolené správanie programu Grep je vrátiť celý riadok textu, keď niektorá časť zodpovedá vášmu regexu. Iné programy nemusia robiť toto a môžete to vypnúť pomocou príkazu "-o".

Môžete tiež špecifikovať striedanie pomocou potrubia( |), ako je tu:

speciali( s | z) e

Nájdete tu:

  • špecializujú
  • špecializujú

Pri použití príkazu grep potrebujeme uniknúť špeciálnym znakom, a) so spätnými lomkami, ako aj s použitím príznaku "-E", aby ste túto prácu vykonali a vyhnuli sa škaredým chybám.

Ako sme spomenuli vyššie, je to preto, že musíme povedať, že bash shell prechádza tieto znaky na grep a nerobiť nič s nimi. Príznak "-E" hovorí, že grep používa zátvorky a potrubie ako špeciálne znaky.

Môžete vyhľadávať podľa vylúčenia pomocou kariet, ktorý je vnútri hranatých zátvoriek a na začiatku množiny:

tom [^ F | 0-9]

Opäť platí, že ak používate grep a bash, nezabudnite uniknúťže potrubie!

Pojmy, ktoré boli v zozname, ale neukázali sa, sú:

  • tom0
  • tom5
  • tom9
  • tomF

Tieto nezodpovedali nášmu regexu.

Ako môžem použiť prostredie?

Často hľadáme na základe hraníc. Niekedy chceme iba reťazce, ktoré sa objavujú na začiatku slova, na konci slova alebo na konci riadku kódu. To sa dá ľahko urobiť pomocou toho, čo nazývame kotvy.

Pomocou kariet( mimo zátvoriek) môžete označiť začiatok riadku.

^ tom

Ak chcete vyhľadať koniec riadku, použite znak dolára.

tom $

Môžete vidieť, že náš vyhľadávací reťazec prichádza pred kotvou v tomto prípade.

Môžete tiež použiť pre zápasy, ktoré sa zobrazujú na začiatku alebo na konci slov, nie na celé riadky.

\ &

tom \

Ako sme spomenuli v poznámke na začiatku tohto článku, musíme uniknúť týmto špeciálnym znakom, pretože používame bash. Prípadne môžete použiť aj jednoduché úvodzovky:

Výsledky sú rovnaké.Uistite sa, že používate jednoduché úvodzovky a nie dvojité úvodzovky.

Ďalšie zdroje pre pokročilé regexps

Tu sme len stlačili tip ľadovca. Môžete tiež vyhľadávať peňažné podmienky vymedzené značkou meny a vyhľadávať niektorý z troch alebo viacerých zodpovedajúcich výrazov. Veci sa môžu naozaj komplikovať.Ak máte záujem dozvedieť sa viac o regulárnych výrazoch, pozrite si prosím nasledujúce zdroje.

  • Zytrax.com má niekoľko stránok s konkrétnymi príkladmi toho, prečo sa veci zhodujú.
  • Regular-Expressions.info má tiež vraha sprievodcu mnohými pokročilejšími materiálmi, ako aj šikovnú referenčnú stránku.
  • Gnu.org má stránku určenú na použitie regexps s grep.

Môžete tiež vytvárať a otestovať svoje regulárne výrazy pomocou bezplatného online nástroja Flash s názvom RegExr. Funguje pri písaní, je zadarmo a môže byť použitý vo väčšine prehliadačov.

Máte obľúbené použitie pre regulárne výrazy? Poznať veľkú dávku rename, ktorá ich používa? Možno sa len chcete chváliť o svojom grep-fu. Prispieť svoje myšlienky komentovaním!