Homepage » hogyan kell » Hogyan használjuk az alapszabályos kifejezéseket a jobb kereséshez és az idő megtakarításához

    Hogyan használjuk az alapszabályos kifejezéseket a jobb kereséshez és az idő megtakarításához

    Akár keresett Grep-szel, akár olyan programokat nézett, amelyek az Ön számára fájlokat átnevezhetik, valószínűleg azon tűnődött, vajon könnyebb módja volt-e a munkának. Szerencsére van, és ez a rendszeres kifejezés.

    (Képregény az XKCD.com-tól)

    Mik a rendszeres kifejezések?

    A rendszeres kifejezések nagyon konkrét módon formázott állítások, és sok különböző eredményt jelenthetnek. „Regex” vagy „regexp” néven is ismertek, ezeket elsősorban a keresési és fájlnevezési funkciókban használják. Egy regex felhasználható olyan képletként, amely számos különböző lehetséges kimenetet hoz létre, amelyek mindegyike keresésre kerül. Alternatív megoldásként megadhatja, hogyan kell nevet adni egy csoportnak a regex megadásával, és a szoftver fokozatosan léphet a következő tervezett kimenetre. Ily módon könnyen és hatékonyan átnevezheti több mappát több mappában, és meghaladhatja az egyszerű számozási rendszer korlátait.

    Mivel a rendszeres kifejezések használata speciális szintaxisra támaszkodik, a programnak képesnek kell lennie olvasni és elemezni őket. Számos Windows és OS X programcsomag-átnevező program támogatja a regexps-et, valamint a GREP platformon keresztüli keresőeszközt (amelyet a Bash Scripting for Beginners Guide-ban megérintettünk) és az Awk parancssori eszközt a * Nix számára. Emellett számos alternatív fájlkezelő, indító és kereső eszköz használja őket, és nagyon fontos helyet foglal el a Perl és a Ruby programozási nyelvekben. Más fejlesztői környezetek, mint például a .NET, Java és Python, valamint a közelgő C ++ 11 szabványos könyvtárakat biztosítanak a rendszeres kifejezések használatához. Amint el tudod képzelni, nagyon hasznosak lehetnek, amikor minimalizálják a programba bevitt kód mennyiségét.

    A Megjegyzés a menekülő karakterekről

    Mielőtt bemutatnánk példákat, szeretnénk valamit kiemelni. A bash héj és a grep parancs segítségével fogjuk megmutatni, hogyan kell alkalmazni a rendszeres kifejezéseket. A probléma az, hogy néha speciális karaktereket akarunk használni, amelyeket át kell adni a grep-nek, és a bash shell értelmezi ezt a karaktert, mert a héj is használja. Ilyen körülmények között el kell hagynunk ezeket a karaktereket. Ez zavaró lehet, mert ez a karakterek „menekülése” a regexps-eken belül is előfordul. Például, ha ezt grep-be akarjuk beírni:

    \<

    ezt helyettesítenünk kell a következővel:

    \\\<

    Minden egyes különleges karakter egy hátlapot kap. Alternatív megoldásként egyéni idézeteket is használhat:

    „\<'

    Az egyes idézetek azt mondják, hogy a bash NEM értelmezi, hogy mi van benne. Bár ezeket a lépéseket meg kell követelni, hogy megmutathassuk az Ön számára, a programok (különösen a GUI-alapúak) gyakran nem igénylik ezeket az extra lépéseket. Ahhoz, hogy a dolgok egyszerűek és egyszerűek legyenek, az aktuális rendszeres kifejezést idézett szövegként kapja meg, és a parancssoros képernyőképekben megjelenik a megszökött szintaxis..

    Hogyan bővülnek?

    A Regexps valóban tömör módja a kifejezések megadásának, hogy a számítógép több lehetőségre is kiterjeszthesse azokat. Nézzük meg a következő példát:

    tom [0123456789]

    A szögletes zárójelek - [és] - megmondják az elemző motornak, hogy bármi is van benne, bármely ONE karakter használható. Bármi is van a zárójelben, karakterkészletnek nevezzük.

    Tehát, ha hatalmas listája volt a bejegyzéseknek, és ezt a regexet használtuk a kereséshez, az alábbi kifejezések illeszkednének:

    • Tomi
    • tom0
    • tom1
    • tom2
    • tom3

    stb. Az alábbi lista azonban nem egyeztethető össze, és így NEM jelenik meg az eredményekben:

    • paradicsom ; a regex nem számít semmilyen betűt a „tom” után
    • Tom; a regex nagybetűk!

    Azt is kiválaszthatja, hogy egy olyan periódussal (.) Keressen, amely lehetővé teszi bármely karakter jelenlétét, amennyiben jelen van egy karakter.

    Amint láthatod, graping

    .Tomi

    nem hozott fel olyan kifejezéseket, amelyeknek az elején csak „tom” volt. Még a „zöld paradicsom” is bejött, mert a „tom” előtti tér karakternek számít, de a „tomF” kifejezéseknek nem volt karaktere az elején, és így figyelmen kívül hagyották.

    Megjegyzés: A Grep alapértelmezett viselkedése az, hogy a szöveg egész sorát visszaküldi, ha egy rész megfelel a regex-nek. Előfordulhat, hogy más programok nem teszik ezt meg, és ezt a "-o" jelzővel grepben is kikapcsolhatja.

    A csővel (|) is megadhatja a váltást, mint itt:

    speciali (ek | Z) e

    Mindkettő:

    • szakosít
    • szakosít

    A grep parancs használatakor el kell kerülnünk a speciális karaktereket (, |, és) a visszafelé irányuló görbékkel, valamint ki kell használnunk a „-E” jelzőt, hogy ezt működtessük és elkerüljük a csúnya hibákat.

    Ahogy fentebb említettük, ez azért van, mert meg kell mondanunk a bash shell-nek, hogy átadja ezeket a karaktereket grep-nek, és ne tegyen semmit velük. A "-E" jelző azt mondja a grepnek, hogy a zárójeleket és a csövet speciális karakterként használja.

    A kizárással a szögletes zárójelben és a készlet elején egyaránt megtalálható caret segítségével kereshet:

    tom [^ F | 0-9]

    Ismét, ha grepet és bash-ot használsz, ne felejtsd el elmenekülni a csőről!

    A listában szereplő, de NEM megjelenített kifejezések a következők:

    • tom0
    • tom5
    • tom9
    • tomF

    Ezek nem egyeztek meg a regexünkkel.

    Hogyan használhatom a környezeteket?

    Gyakran határok alapján keresünk. Néha csak olyan sztringeket akarunk, amelyek egy szó elején jelennek meg, egy szó végén, vagy egy kódsor végén. Ez könnyen elvégezhető a horgonyok használatával.

    A szőnyeg használata (a zárójelen kívül) lehetővé teszi, hogy kijelölje a sor kezdetét.

    ^ tom

    Egy sor végének kereséséhez használja a dollárjelet.

    tom $

    Láthatjuk, hogy a keresési karakterláncunk a Horgony előtt áll.

    A szavak elején vagy végén megjelenő mérkőzésekre, nem egész sorokra is.

    \

    tom \>

    Ahogy a cikk elején található megjegyzésben említettük, el kell kerülnünk ezeket a különleges karaktereket, mert bash-t használunk. Alternatív megoldásként egyéni idézeteket is használhat:

    Az eredmények megegyeznek. Győződjön meg róla, hogy egyetlen idézetet használ, és nem kettős idézeteket.

    Egyéb források a fejlett regexps-hez

    Itt csak a jéghegy csúcsához értünk. A pénznemjelző által definiált pénzkifejezéseket is keresheti, és kereshet három vagy több megfelelő feltétel közül. A dolgok nagyon bonyolultak. Ha szeretne többet megtudni a rendszeres kifejezésekről, nézze meg az alábbi forrásokat.

    • A Zytrax.com-nak néhány oldala van konkrét példákkal arra vonatkozóan, hogy a dolgok miért nem felelnek meg.
    • A rendszeres-Expressions.info-nak is van egy gyilkos útmutatója a sok fejlettebb anyaghoz, valamint egy praktikus referenciaoldal.
    • A Gnu.org-nak van egy oldala, amely a regexps grep használatával foglalkozik.

    Ön is készíthet és tesztelhet rendszeres kifejezéseket egy ingyenes, Flash-alapú online RegExr eszközzel. Úgy működik, mint írja, ingyenes, és a legtöbb böngészőben használható.


    Rendszeres kifejezésekhez van-e kedvenc használata? Ismerje a nagy kötegelt átnevezőt, amely ezeket használja? Talán csak a grep-fu-ját szeretnéd. Hozzájárul a gondolataidhoz kommentálással!