29Jun

Jak používat základní regulární výrazy pro lepší vyhledávání a úsporu času

click fraud protection

Ať už jste hledali s Grepem nebo se díváte na programy, které vám mohou dávkově přejmenovat soubory, pravděpodobně jste se zajímali, jestli existuje snadnější způsob, jak se vaše práce ujistit. Naštěstí existuje a říká se to "regulární výrazy".

( Comic from XKCD.com)

Co jsou regulární výrazy?

Pravidelné výrazy jsou výrazy naformátované velmi specificky a mohou mít mnoho různých výsledků.Také známé jako "regex" nebo "regexp", jsou primárně používány při hledání a mapování funkcí.Jeden regex lze použít jako vzorec pro vytvoření řady různých možných výstupů, z nichž všechny jsou vyhledávány. Případně můžete specifikovat, jak by měla být pojmenována skupina souborů zadáním regexu, a software se může postupně přesouvat na další zamýšlený výstup. Tímto způsobem můžete snadno a efektivně přejmenovat více souborů ve více složkách a můžete jít nad rámec omezení jednoduchého systému číslování.

Protože použití regulárních výrazů závisí na zvláštní syntaxi, musí být váš program schopen číst a analyzovat je. Mnoho programů pro přejmenování dávkových souborů pro operační systém Windows a OS X podporuje podporu regexps, stejně jako nástroj GREP pro vyhledávání na různých platformách( o kterém jsme se zmínili v příručce Bash Scripting for the Beginners Guide) a nástroj příkazového řádku Awk pro * Nix. Kromě toho využívají mnoho alternativních správců souborů, spouštěčů a vyhledávacích nástrojů a mají velmi důležité místo v programovacích jazycích, jako jsou Perl a Ruby. Další vývojová prostředí jako. NET, Java a Python, stejně jako nadcházející C ++ 11, poskytují standardní knihovny pro použití regulárních výrazů.Jak si dokážete představit, mohou být opravdu užitečné, když se snažíte minimalizovat množství kódu, který jste vložili do programu.

instagram viewer

Poznámka k escapingovým znakům

Než vám ukážeme příklady, rádi bychom něco poukázali. Budeme používat příkaz bash shell a grep příkaz, který vám ukáže, jak používat regulární výrazy. Problémem je, že někdy chceme použít speciální znaky, které musíme předat grepovi, a bash shell bude interpretovat tento znak, protože shell ho také používá.Za těchto okolností musíme tyto znaky "uniknout".To může být matoucí, protože tato "úniková" postava se také vyskytuje uvnitř regexpsů.Například, pokud chceme zadat toto do grep:

\

to bude muset nahradit:

\\\ & lt;

Každý zvláštní znak má zde jedno zpětné lomítko. Alternativně můžete také použít jednoduché uvozovky:

'\'

Jednotlivé citace říkají, že bash NE interpretovat to, co je uvnitř.Zatímco požadujeme, aby tyto kroky byly provedeny, abychom mohli pro vás prokázat, vaše programy( zejména ty, které jsou založeny na grafickém rozhraní) často nebudou vyžadovat tyto další kroky. Chcete-li, aby to bylo jednoduché a jednoduché, skutečný regulární výraz vám bude dán jako citovaný text a na obrazovkách obrazovky příkazového řádku uvidíte únikovou syntaxi.

Jak se rozšiřují?

Regexps jsou skutečně stručné způsoby uvádění termínů tak, aby je počítač mohl rozšířit do více možností.Podívejme se na následující příklad:

tom [0123456789]

Hranaté závorky - [a] - říkají analyzátoru, že vše, co je uvnitř, může být použito libovolného znaku ONE.Cokoli je uvnitř těchto závorek nazývá znaková sada.

Takže pokud bychom měli obrovský seznam položek a my bychom tento regex použili k vyhledávání, měly by odpovídat následující termíny:

  • tom
  • tom0
  • tom1
  • tom2
  • tom3

a tak dále. Následující seznam však NEBUDE odpovídat, a proto by se ve výsledcích nezobrazoval: rajčata

  • ;regex nezahrnuje žádné písmena po "tom"
  • Tom;v regexu se rozlišují velká a malá písmena!

Můžete také zvolit hledání s periodou( .), Která umožní libovolný znak, pokud je přítomen znak.

Jak vidíte, skákání s

. tom

nevyvolalo podmínky, které měly na začátku pouze "tom".Dokonce i "zelené rajčata" přišly, protože prostor před "tom" se počítá jako postava, ale termíny jako "tomF" neměly na začátku charakter, a proto byly ignorovány.

Poznámka: Výchozí chování společnosti Grep je vrátit celý řádek textu, pokud se některá část shoduje s vaším regexem. Jiné programy to nemusí udělat, a můžete je vypnout pomocí příkazu "-o" v grafu.

Můžete také určit střídání pomocí potrubí( |), jako je zde:

speciali( s | z)

Najdete zde jak:

  • specialize
  • specialize

Při použití příkazu grep musíme uniknout zvláštním znakům|, a) s zpětnými lomítky, stejně jako pomocí příznaku "-E", abyste tuto práci provedli a vyhnuli se ošklivým chybám.

Jak jsme se zmínili výše, je to proto, že musíme říct bash shellu, že tyto znaky předá grepům a neudělat nic s nimi. Příznak "-E" říká grep, že použije závorky a potrubí jako zvláštní znaky.

Můžete vyhledávat podle vyloučení pomocí kratku, která je uvnitř hranatých závorek a na začátku sady:

tom [^ F | 0-9]

Opět platí, že pokud používáte grep a bash, nezapomeňte uniknoutto potrubí!

Pojmy, které byly v seznamu, ale neukázaly se, jsou:

  • tom0
  • tom5
  • tom9
  • tomF

Ty neodpovídají našemu regexu.

Jak mohu využít prostředí?

Často hledáme na základě hranic. Někdy chceme pouze řetězce, které se objeví na začátku slova, na konci slova nebo na konci řádku kódu. Toho lze snadno udělat pomocí toho, co nazýváme kotvy.

Použitím karet( mimo závorky) můžete určit "začátek" řádku.

^ tom

Chcete-li hledat konec řádku, použijte znak dolaru.

tom $

Vidíte, že náš vyhledávací řetězec přichází PŘED kotvou v tomto případě.

Můžete také použít pro zápasy, které se zobrazují na začátku nebo na konci slov, nikoliv celé řádky.

& lt; tom

tom \ & gt;

Jak jsme se zmínili v poznámce na začátku tohoto článku, musíme uniknout těmto speciálním znakům, protože používáme bash. Případně můžete také použít jednoduché uvozovky:

Výsledky jsou stejné.Ujistěte se, že používáte jednoduché uvozovky a nikoli uvozovky.

Další zdroje pro pokročilé regexpy

Zde jsme se dostali pouze k tipu ledovce. Můžete také vyhledávat peněžní podmínky vymezené značkou měny a hledat některý ze tří nebo více odpovídajících výrazů.Věci mohou být opravdu komplikované.Pokud máte zájem dozvědět se více o regulárních výrazech, podívejte se prosím na následující zdroje.

  • Zytrax.com má několik stránek s konkrétními příklady toho, proč se věci dělají a neodpovídají.
  • Regular-Expressions.info má také vraha průvodce mnoha pokročilejšími věcmi, stejně jako užitečnou referenční stránku.
  • Gnu.org má stránku určenou k použití regexps s grep.

Můžete také vytvářet a otestovat své regulární výrazy pomocí bezplatného online nástroje nazvaného RegExr založeného na blesku. Funguje při psaní, je volná a může být použita ve většině prohlížečů.

Máte oblíbené použití pro regulární výrazy? Znáte velkou dávkovou rename, která je používá?Možná se jen chtěl chlubit kvůli vaší grep-fu. Přispějte své myšlenky komentováním!