29Jun

Kuinka käyttää tavallisia säännöllisiä lausekkeita etsimään parempaa ja säästämään aikaa

click fraud protection

Olitpa etsinyt Grepin avulla tai katsellut ohjelmia, joiden avulla voit nimetä tiedostoja uudestaan, olet luultavasti ihmetellyt, oliko helpompi tapa saada työsi tehtyäsi. Onneksi on, ja sitä kutsutaan "säännöllisinä ilmaisuina".

( Comic from XKCD.com)

Mitä ovat säännölliset lausekkeet?

Säännölliset lausekkeet ovat muotoiluja, jotka on muotoiltu hyvin täsmällisesti ja jotka voivat vastata monenlaisiin tuloksiin. Tunnetaan myös nimellä "regex" tai "regexp", niitä käytetään ensisijaisesti haku- ja tiedostojen nimeämistoiminnoissa. Yhdestä regexistä voidaan käyttää kaavaa, jotta luodaan useita eri mahdollisia tuotoksia, joita kaikkia etsitään. Vaihtoehtoisesti voit määrittää, kuinka ryhmä tiedostoja nimetään määrittelemällä regex ja ohjelmistosi voi siirtyä portaittain seuraavaan haluttuun lähtöön. Tällä tavoin voit nimetä useita tiedostoja useisiin kansioihin helposti ja tehokkaasti ja voit siirtyä yksinkertaisen numerointijärjestelmän rajoitusten ulkopuolelle.

Koska säännöllisten lausekkeiden käyttö perustuu erityiseen syntaksiin, sinun on kyettävä lukemaan ja jäsentämään niitä.Useilla Windows- ja OS X: n erätiedostojen uudelleennimeämisohjelmilla on tukea regexpsille sekä Cross Platform -työkalun GREP-työkalua( jota koskimme Bash Scripting for Beginner Guide -ohjelmaan) ja Awk-komentorivityökalua * Nixille. Lisäksi monet vaihtoehtoiset tiedostonhallintaohjelmat, kantoraketit ja hakutyökalut käyttävät niitä, ja niillä on erittäin tärkeä asema ohjelmointikieleissä, kuten Perlissä ja Ruby. Muut kehitysympäristöt, kuten. NET, Java ja Python sekä tulevat C + + 11, tarjoavat kaikki tavalliset kirjastot säännöllisten lausekkeiden käyttämiseen. Kuten voitte kuvitella, ne voivat olla todella hyödyllisiä, kun yrität minimoida ohjelmaan syötetyn koodin määrän.

instagram viewer

Huomautus Escaping -hahmoista

Ennen kuin näytämme esimerkkejä, haluaisimme huomauttaa jotain. Aiomme käyttää bash-kuorta ja grep-komentoa, jotta voimme näyttää, miten sovellamme säännöllisiä lausekkeita. Ongelmana on, että joskus haluamme käyttää erikoismerkkejä, jotka on siirrettävä grepille, ja bash-kuori tulkitsee tämän merkin, koska kuori käyttää sitä myös. Näissä olosuhteissa meidän on "poistettava" nämä merkit. Tämä voi olla hämmentävää, koska merkkien "karkaaminen" esiintyy myös regexpsin sisällä.Jos halutaan esimerkiksi lisätä tämä grep:

\ & lt;

meidän on korvattava tämä seuraavilla tavoilla:

\\\ & lt;

Jokainen erikoismerkki saa yhden vastavalinnan. Vaihtoehtoisesti voit käyttää myös yksittäisiä lainauksia:

'\ & lt;'

Yksittäiset lainausmerkit kertovat bash EI tulkitsevat, mitä niiden sisällä on. Vaatiessamme näitä toimenpiteitä, jotta pystymme osoittamaan sinulle, ohjelmasi( etenkin GUI-pohjaiset) eivät usein edellytä näitä ylimääräisiä vaiheita. Jotta asiat olisivat yksinkertaisia ​​ja suoraviivaisia, todellinen säännöllinen lauseke annetaan sinulle sanomana tekstinä, ja komentorivin kuvakaappauksissa näet tyhjän syntaksin.

Miten ne laajenevat?

Regexps on todella suppea tapa sanoa termejä niin, että tietokoneesi voi laajentaa niitä useisiin vaihtoehtoihin. Katsotaanpa seuraavassa esimerkissä:

tom [0123456789]

Kaaret - [ja] - kertoivat parsing-moottorille, että mikä tahansa on sisällä, minkä tahansa ONE-merkin avulla voidaan sovittaa. Mitä tahansa suluissa on, kutsutaan merkistöksi.

Joten, jos meillä olisi valtava luettelo merkinnöistä ja käytimme tätä regexia etsimään, seuraavat termit sovitettaisiin yhteen:

  • tom
  • tom0
  • tom1
  • tom2
  • tom3

ja niin edelleen. Seuraavaa luetteloa EI kuitenkaan hyväksyttäisi, joten se ei ilmesty tuloksiisi:

  • tomaatti;regex ei ota huomioon mitään kirjaimia jälkeen "tom"
  • Tom;regex on erottuva ja pienikokoinen!

Voit myös valita hakua jaksolla( .), Joka mahdollistaa minkä tahansa merkin läsnäolon niin kauan kuin merkki on olemassa.

Kuten näette,

. tom

: n tarttuminen ei tuonut esiin termejä, joiden alussa oli vain "tom".Jopa "vihreät tomaatit" tulivat, koska tilaa ennen "tom" on luonteeltaan luonteeltaan, mutta termejä "tomF" ei ollut alussa luonnetta, joten niitä jätettiin huomiotta.

Huomaa: Grepin oletuskäyttäytyminen on palauttaa koko tekstirivi, kun osa osasta vastaa regexia. Muut ohjelmat eivät voi tehdä tätä, ja voit poistaa tämän pois grepillä "-o" -lipun avulla.

Voit myös määrittää vuorottelun putkella( |), kuten täällä:

speciali( s | z) e

Tämä löytää sekä:

  • erikoistuneet
  • erikoistuvat

Käytettäessä grep-komentoa meidän on poistettava erikoismerkit( ,|, ja) paluupulloilla ja käytä '-E' -lippua saadaksesi tämän toimimaan ja välttämään rumaisia ​​virheitä.

Kuten edellä mainittiin, tämä johtuu siitä, että meidän on kerrottava bash-kuoren välittämään nämä merkit grepille ja tekemättä mitään heidän kanssaan.'-E' -merkki kertoo, että grep käyttää sulkeja ja putkia erikoismerkiksi.

Voit etsiä poissulkemisen avulla käyttämällä kaavioita, jotka ovat sekä suluissa että sarjan alussa:

tom [^ F | 0-9]

Jos käytät grepia ja bashia, muista paetaettä putki!

Listalla olleet ehdot, mutta eivät ilmestyneet:

  • tom0
  • tom5
  • tom9
  • tomF

Nämä eivät sopineet regexiin.

Miten voin käyttää ympäristöjä?

Usein etsimme rajoja. Joskus haluamme vain merkkijonoja, jotka näkyvät sanan alussa, sanan lopussa tai koodin loppuun. Tämä voidaan tehdä helposti käyttämällä kutsumia ankkureita.

Käyttämällä varsi( sulkujen ulkopuolella) voit määrittää rivin alun.

^ tom

Jos haluat etsiä rivin loppua, käytä dollarin merkkiä.

tom $

Näet, että hakusana tulee ennen ankkuria tässä tapauksessa.

Voit myös käyttää otteluita, jotka näkyvät sanojen alussa tai lopussa, ei koko riviltä.

\ & lt; tom

tom \ & gt;

Kuten mainitsimme tämän artikkelin alussa olevassa muistiossa, meidän on poistettava nämä erikoismerkit, koska käytämme bashia. Vaihtoehtoisesti voit käyttää myös yksittäisiä lainauksia:

Tulokset ovat samat. Varmista, että käytät yksittäisiä lainauksia eikä kaksinkertaisia ​​lainauksia.

Muut resurssit Advanced Regexps

: lle Olemme vain kärsineet jäävuoren kärjen täällä.Voit myös etsiä valuuttamerkinnöissä olevia rahan ehtoja ja etsiä kolmesta tai useammasta sopivasta termistä.Asiat voivat olla todella monimutkaisia. Jos haluat lisätietoja säännöllisistä lausekkeista, tutustu seuraaviin lähteisiin.

  • Zytrax.comissa on muutamia sivuja, joissa on tarkkoja esimerkkejä siitä, miksi asiat eivät toimi.
  • Regular-Expressions.info on myös tappajaopas paljon kehittyneemmistä tavaroista sekä kätevä viiteviesti.
  • Gnu.orgilla on sivu, joka on omistettu käyttää regexpsia grepilla.

Voit myös luoda ja testata säännöllisiä ilmaisuja käyttämällä ilmaista Flash-pohjaista verkkotyökalua nimeltä RegExr. Se toimii kirjoittaessasi, on ilmainen, ja sitä voi käyttää useimmissa selaimissa.

Onko sinulla suosikki käyttää säännöllisiä lausekkeita? Tietää erinomaisesta erän renamerista, joka käyttää niitä?Ehkä haluat vain ylistää grep-fu: stä.Anna mielipiteesi kommentoimalla!