Terminalilla: Säännöllisten lausekkeiden käyttö

Yksi asioista, joita olen aina rakastanut Linux-päätelaitteessa, on se, mitä voit saavuttaa säännöllisten lausekkeiden avulla. Joko meidän on löydettävä monimutkaista tekstiä vai korvattava se jollakin muulla, säännöllisten lausekkeiden käyttö voi yksinkertaistaa työtä huomattavasti. Aloitetaan alusta:

VAROITUS: Tämä viesti on kipu perseeseen. Tämän viestin lukeminen koko ajan voi aiheuttaa tajunnan menetystä. Pidä taukoja välillä tai kysy lääkäriltäsi tai apteekista ennen kuin luet koko viestin.

Mikä on säännöllinen lauseke?

Säännöllinen lauseke on sarja erikoismerkkejä, joiden avulla voimme kuvata etsimämme tekstin. Esimerkiksi, jos halusimme etsiä sanaa "linux", riittää, että laitat sanan käyttämäämme ohjelmaan. Sana itsessään on säännöllinen lauseke. Toistaiseksi se näyttää hyvin yksinkertaiselta, mutta entä jos haluamme löytää kaikki numerot tietystä tiedostosta? Tai kaikki rivit, jotka alkavat isolla kirjaimella? Tällöin et voi enää kirjoittaa yksinkertaista sanaa. Ratkaisu on käyttää säännöllistä lauseketta.

Säännölliset lausekkeet vs. tiedostomallit.

Ennen kuin aloitamme säännöllisten lausekkeiden aiheen, haluan selvittää yleisen väärinkäsityksen säännöllisistä lausekkeista. Säännöllinen lauseke ei ole se, mitä asetamme parametriksi komentoihin, kuten rm, cp, viittaamaan kiintolevyn eri tiedostoihin. Se olisi tiedostomalli. Vaikka säännölliset lausekkeet ovat samanlaisia, koska niissä käytetään joitain yleisiä merkkejä, ne ovat erilaisia. Tiedostokuvio ammutaan kiintolevyllä olevia tiedostoja vastaan ​​ja palauttaa ne, jotka vastaavat täysin mallia, kun taas säännöllinen lauseke ammutaan tekstiä vastaan ​​ja palauttaa rivit, jotka sisältävät haetun tekstin. Esimerkiksi mallia vastaava säännöllinen lauseke *.* se olisi jotain ^.*\..*$

Säännöllisten lausekkeiden tyypit.

Kaikki ohjelmat eivät käytä samoja säännöllisiä lausekkeita. Ei paljon vähemmän. Säännöllisiä lausekkeita on useita enemmän tai vähemmän vakiotyyppejä, mutta on ohjelmia, jotka muuttavat syntaksia hieman, sisältävät omia laajennuksiaan tai jopa käyttävät täysin erilaisia ​​merkkejä. Siksi, kun haluat käyttää säännöllisiä lausekkeita sellaisen ohjelman kanssa, jota et tunne hyvin, sinun on ensin tarkasteltava ohjekirjaa tai dokumentaatiota siitä, miltä sen tunnistamat säännölliset lausekkeet ovat.

Ensinnäkin säännöllisiä lausekkeita on kahta päätyyppiä, jotka sisältyvät POSIX-standardiin, jota Linux-työkalut käyttävät. Ne ovat säännöllisiä perus- ja laajennettuja lausekkeita. Monien säännöllisten lausekkeiden, kuten grep tai sed, kanssa toimivien komentojen avulla voit käyttää näitä kahta tyyppiä. Puhun niistä alla. Siellä on myös PERL-tyylisiä säännöllisiä lausekkeita, ja sitten on ohjelmia, kuten vim tai emacs, jotka käyttävät näiden muunnelmia. Riippuen siitä, mitä haluamme tehdä, voi olla tarkoituksenmukaisempaa käyttää yhtä tai toista.

Säännöllisten lausekkeiden testaaminen.

Säännöllisten lausekkeiden syntaksi ei ole mikään triviaali. Kun meidän on kirjoitettava monimutkainen säännöllinen lauseke, tulemme jonoon erikoismerkkejä, joita ei voi ymmärtää ensi silmäyksellä, joten niiden käytön oppimiseksi on välttämätöntä, että meillä on tapa tehdä kaikki haluamamme ja näkemämme testit tulokset helposti. Siksi aion nyt laittaa useita komentoja, joiden avulla voimme tehdä testejä ja kokeilla kaikkea mitä tarvitsemme, kunnes säännölliset lausekkeet ovat dominoineet.

Ensimmäinen on grep-komento. Tätä komentoa käytämme useimmiten hakujen tekemiseen. Syntaksi on seuraava:

grep [-E] 'REGEX' FICHERO
COMANDO | grep [-E] 'REGEX'

Suosittelen säännöllisten lausekkeiden sijoittamista aina lainausmerkkeihin, jotta kuori ei pääse siihen. Ensimmäinen tapa on löytää säännöllinen lauseke tiedostosta. Toinen sallii komennon ulostulon suodattamisen säännöllisen lausekkeen kautta. Oletusarvoisesti grep käyttää säännöllisiä säännöllisiä lausekkeita. -E -vaihtoehto on tarkoitettu laajennettujen säännöllisten lausekkeiden käyttämiseen.

Temppu, joka voi auttaa meitä näkemään, kuinka säännölliset lausekkeet toimivat, on mahdollistaa värien käyttö grep-komennossa. Tällä tavalla korostetaan se osa tekstistä, joka vastaa käyttämäämme säännöllistä lauseketta. Aktivoi väri grep-komennossa vain varmista, että ympäristömuuttuja GREP_OPTIONS sisältää arvoa --color, joka voidaan tehdä tällä komennolla:

GREP_OPTIONS=--color

Voimme laittaa sen .bashrc-tiedostoon aina aktivoidaksemme sen.

Toinen tapa käyttää säännöllisiä lausekkeita on käyttää sed-komentoa. Tämä sopii paremmin tekstin korvaamiseen, mutta sitä voidaan käyttää myös hakuun. Syntaksi sille olisi seuraava:

sed -n[r] '/REGEX/p' FICHERO
COMANDO | sed -n[r] '/REGEX/p'

Komento sed käyttää oletusarvoisesti myös säännöllisiä peruslausekkeita, voit käyttää laajennettuja säännöllisiä lausekkeita -r-vaihtoehdolla.

Toinen komento, jonka haluan myös nimetä, on awk. Tätä komentoa voidaan käyttää moniin asioihin, koska sen avulla voit kirjoittaa komentosarjoja omalla ohjelmointikielelläsi. Jos haluamme etsiä säännöllistä lauseketta tiedostosta tai komennon lähdöstä, tapa käyttää sitä olisi seuraava:

awk '/REGEX/' FICHERO
COMANDO | awk '/REGEX/'

Tämä komento käyttää aina laajennettuja säännöllisiä lausekkeita.

Testien suorittamiseen tarvitaan myös tekstiä, joka toimii esimerkkinä siitä etsimiseen. Voimme käyttää seuraavaa tekstiä:

- Lista de páginas wiki:

ArchLinux: https://wiki.archlinux.org/
Gentoo: https://wiki.gentoo.org/wiki/Main_Page
CentOS: http://wiki.centos.org/
Debian: https://wiki.debian.org/
Ubuntu: https://wiki.ubuntu.com/

- Fechas de lanzamiento:

Arch Linux: 11-03-2002
Gentoo: 31/03/2002
CentOs: 14-05-2004 03:32:38
Debian: 16/08/1993
Ubuntu: 20/10/2004

Desde Linux Rulez.

Tätä tekstiä käytän esimerkkeinä muusta viestistä, joten suosittelen, että kopioit sen tiedostoon, jotta se olisi käsillä terminaalista. Voit laittaa haluamasi nimen. Olen kutsunut sitä regexiksi.

Aloitusopetus.

Nyt meillä on kaikki mitä tarvitset säännöllisten lausekkeiden testaamiseen. Mennään vähitellen. Aion laittaa useita esimerkkejä hauista säännöllisin lausekkein, joissa selitän, mitä kukin hahmo on tarkoitettu. Ne eivät ole kovin hyviä esimerkkejä, mutta koska minulla on hyvin pitkä viesti, en halua enää mutkistaa sitä. Ja aion vain naarmuttaa pintaa siitä, mitä voidaan tehdä säännöllisillä lausekkeilla.

Yksinkertaisin on etsiä tiettyä sanaa, esimerkiksi oletetaan, että haluamme löytää kaikki rivit, jotka sisältävät sanan "Linux". Tämä on helpoin, koska meidän on vain kirjoitettava:

grep 'Linux' regex

Ja voimme nähdä tuloksen:

KaariLinux: https://wiki.archlinux.org/ Arch Linux: 11-03-2002 Alkaen Linux Sääntö.

Nämä ovat kolme riviä, jotka sisältävät sanan "Linux", joka, jos olemme käyttäneet väritemppua, näkyy korostettuna. Huomaa, että se tunnistaa etsimämme sanan, vaikka se olisi osa pidempää sanaa, kuten "ArchLinuxissa". Se ei kuitenkaan korosta URL-osoitteessa https://wiki.archlinux.org/ esiintyvää sanaa "linux". Tämä johtuu siitä, että se näkyy siellä pienillä kirjaimilla "l" ja olemme etsineet sitä isoilla kirjaimilla. Grep-komennolla on vaihtoehtoja tähän, mutta en aio puhua niistä artikkelissa, joka käsittelee säännöllisiä lausekkeita.

Tällä yksinkertaisella testillä voimme tehdä ensimmäisen johtopäätöksen:

  • Normaali merkki, joka laitetaan säännölliseen lausekkeeseen, vastaa itseään.

Mikä tarkoittaa, että jos laitat kirjaimen "a", se etsii kirjainta "a". Näyttää loogiselta, eikö? 🙂

Oletetaan nyt, että haluamme etsiä sanaa "CentO", jota seuraa mikä tahansa merkki, mutta vain yksi merkki. Tätä varten voimme käyttää "." -Merkkiä, joka on jokin merkki vastaava jokerimerkki, mutta vain yhtä:

grep 'CentO.' regex

Ja tulos on:

CentOS: http://wiki.centos.org/
CentOS: 14-05-2004 03:32:38

Mikä tarkoittaa, että se sisältää "S": n "CentOS": ssa, vaikka yhdessä tapauksessa se on isoja ja toisessa pieniä. Jos joku muu merkki ilmestyi kyseiseen paikkaan, se sisältäisi myös sen. Meillä on jo toinen sääntö:

  • Hahmo "." vastaa mitä tahansa merkkiä.

Se ei ole enää niin triviaali kuin miltä näytti, mutta tällä emme voi tehdä paljon. Mennään vähän pidemmälle. Oletetaan, että haluamme löytää rivit, joissa esiintyvät vuodet 2002 ja 2004. Ne näyttävät olevan kaksi hakua, mutta ne voidaan tehdä kerralla näin:

grep '200[24]' regex

Mikä tarkoittaa, että haluamme löytää luvun 200, jota seuraa 2 tai 4. Ja tulos on seuraava:

ArchLinux: 11-03-2002
Gentoo: 31 /2002
CentO: 14-05-2004 03:32:38
Ubuntu: 20/10/2004

Mikä johtaa meidät kolmanteen sääntöön:

  • Suluissa olevat useita merkkejä vastaavat mitä tahansa suluissa olevia merkkejä.

Suluissa on enemmän pelaamista. niitä voidaan käyttää myös merkkien poissulkemiseen. Oletetaan esimerkiksi, että haluamme löytää sivustoja, joissa ":" -merkki näkyy, mutta jota ei seuraa "/". Komento olisi seuraava:

grep ':[^/]' regex

Kyse on yksinkertaisesti merkinnästä "^" ensimmäisenä merkkinä suluissa. Voit laittaa kaikki haluamasi merkit alle. Tämän viimeisen komennon tulos on seuraava:

Arch Linux: https://wiki.archlinux.org/
Gentoo: https://wiki.gentoo.org/wiki/Main_Page
CentOS: http://wiki.centos.org/
Debian: https://wiki.debian.org/
Ubuntu: https://wiki.ubuntu.com/
Arch Linux: 11-03-2002 Gentoo: 31 CentOs: 14-05-2004 03:32:38 Debian: 16 Ubuntu: 20/10/2004

Nyt ":" jakelunimien takana on korostettu, mutta ei URL-osoitteissa olevia, koska URL-osoitteissa on "/" jälkeen.

  • Merkin "^" sijoittaminen hakasulun alkuun vastaa mitä tahansa merkkiä lukuun ottamatta muita hakasulkeessa olevia merkkejä.

Toinen asia, jonka voimme tehdä, on määrittää merkkialue. Esimerkiksi, jos haluat etsiä mitä tahansa numeroa, jota seuraa "-", se näyttää tältä:

grep '[0-9]-' regex

Tällä määritämme merkin välillä 0 ja 9 ja sitten miinusmerkin. Katsotaanpa tulos:

ArchLinux: 11-03-2002 CentOs: 14-05-2004 03: 32: 38

Voit määrittää useita alueita suluissa, jotta alueet voidaan sekoittaa yksittäisiin merkkeihin.

  • Kahden "-" - merkillä erotetun merkin sijoittaminen suluissa vastaa mitä tahansa alueen merkkiä.

Katsotaanpa nyt, jos voimme valita URL-osoitteiden ensimmäisen osan. Se, joka sanoo "http" tai "https". Ne eroavat vain viimeisistä "s": stä, joten tehkäämme se seuraavasti:

grep -E 'https?' regex

Kysymysmerkkiä käytetään tekemään merkin vasemmalta puolelta valinnainen. Mutta nyt olemme lisänneet -E-vaihtoehdon komentoon. Tämä johtuu siitä, että kysely on laajennettujen säännöllisten lausekkeiden ominaisuus. Tähän asti käytimme säännöllisiä säännöllisiä lausekkeita, joten mitään ei tarvinnut laittaa. Katsotaanpa tulos:

ArchLinux: https: //wiki.archlinux.org/ Gentoo: https: //wiki.gentoo.org/wiki/Main_Page CentOS: http: //wiki.centos.org/ Debian: https: //wiki.debian.org/ Ubuntu: https: //wiki.ubuntu.com/

Joten meillä on jo uusi sääntö:

  • Hahmo, jota seuraa "?" vastaa kyseistä merkkiä tai ei yhtään. Tämä koskee vain laajennettuja säännöllisiä lausekkeita.

Nyt löydämme kaksi täysin erilaista sanaa. Katsotaanpa, kuinka löytää rivit, jotka sisältävät sekä sana "Debian" että "Ubuntu".

grep -E 'Debian|Ubuntu' regex

Pystysuuntaisen palkin avulla voimme erottaa kaksi tai useampaa erilaista säännöllistä lauseketta ja löytää ne linjat, jotka sopivat yhteen niistä:

Debian: https://wiki.debian.org/
Ubuntu: https://wiki.ubuntu.com/
Debian: 16 / 08 / 1993
Ubuntu: 20 / 10 / 2004
  • Hahmo «|» palvelee erottamaan useita säännöllisiä lausekkeita ja otteluita minkä tahansa kanssa. Se koskee myös laajennettuja säännöllisiä lausekkeita.

Jatketaan. Nyt aiomme etsiä sanaa "Linux", mutta vain siellä, missä se ei ole kiinni toisessa sanassa vasemmalla. Voimme tehdä sen näin:

grep '\

Tärkeä merkki on "<", mutta se on vältettävä asettamalla "\" eteen, jotta grep tulkitsee sen erikoismerkiksi. Tulos on seuraava:

Kaari Linux: 11-03-2002 Alkaen Linux Sääntö.

Voit käyttää "\>" myös etsiä sanoja, jotka eivät ole aivan vierekkäin. Mennään esimerkki. Kokeillaan tätä komentoa:

grep 'http\>' regex

Sen tuottama tulos on seuraava:

CentOS: http: //wiki.centos.org/

"Http" tuli ulos, mutta ei "https", koska "https" -kohdassa "p": n oikealla puolella on edelleen merkki, joka voi olla osa sanaa.

  • Merkit "<" ja ">" vastaavat vastaavasti sanan alkua ja loppua. Nämä merkit on vältettävä, jotta niitä ei tulkita kirjaimellisiksi merkeiksi.

Menemme asioiden kanssa hieman monimutkaisemmaksi. "+" -Merkki vastaa merkkiä vasemmalle, toistetaan ainakin kerran. Tämä merkki on käytettävissä vain laajennetuilla säännöllisillä lausekkeilla. Sen avulla voimme etsiä esimerkiksi useita peräkkäisiä numeroita, jotka alkavat ":".

grep -E ':[0-9]+' regex

tulos:

CentOs: 14-05-2004 03: 32: 38

Numero 38 on myös korostettu, koska se alkaa myös ":".

  • "+" -Merkki vastaa vasemmalla olevaa merkkiä, toistetaan ainakin kerran.

Voit hallita toistojen määrää myös "{" ja "}" -näppäimillä. Ajatuksena on laittaa aaltosulkeisiin numero, joka osoittaa haluamasi toistojen tarkan määrän. Voit myös laittaa alueen. Katsotaanpa esimerkkejä kahdesta tapauksesta.

Ensin aiomme löytää kaikki olemassa olevat nelinumeroiset sekvenssit:

grep '[0-9]\{4\}' regex

Huomaa, että sinun täytyy välttää kiharat olkaimet, jos käytät säännöllisiä peruslausekkeita, mutta ei, jos käytät laajennettuja. Laajennettuna se olisi näin:

grep -E '[0-9]{4}' regex

Ja tulos molemmissa tapauksissa olisi seuraava:

ArchLinux: 11-03-2002
Gentoo: 31 /2002
CentO: 14-05-2004 03:32:38
Debian: 16/08/1993
Ubuntu: 20/10 /2004
  • Merkit "{" ja "}", joiden välissä on numero, vastaavat edellistä merkkiä, joka toistettiin määritetty määrä kertoja.

Nyt toinen esimerkki olkaimista. Oletetaan, että haluamme löytää sanoja, joissa on 3-6 pientä kirjainta. Voisimme tehdä seuraavat:

grep '[a-z]\{3,6\}' regex

Ja tulos olisi seuraava:

- THEISTA de sivus wiki: TORCHLinux: https:/ /wiki.Arch Linux.org/ Gsitten: https:/ /wiki.Gentoo.org/wiki/Main_Pikä
CentOS: http:/ /wiki.CentOS.org/ Debian: https:/ /wiki.debian.org/ TAIumpikuja: https:/ /wiki.Ubuntu.com/ - Fsinä kaipaat de Julkaisu: TORCH Linux: 11-03-2002 Gsitten: 31 CentOs: 14-05-2004 03:32:38
Debian: 16 Uumpikuja: 20 Dse on Linux Rulez.

Mikä, kuten näette, ei näytä siltä kuin haluaisimme. Tämä johtuu siitä, että säännöllinen lauseke löytää kirjaimet muista pidemmistä sanoista. Kokeillaan tätä toista versiota:

grep '\<[a-z]\{3,6\}\>' regex

tulos:

- Luettelo sivuista wiki: ArchLinux: https:/ /wiki.archlinux.org/ Gentoo: https:/ /wiki.Gentoo.org/wiki/ Pääsivu CentOS: http:/ /wiki.CentOS.org/ Debian: https:/ /wiki.debian.org/ Ubuntu: https:/ /wiki.Ubuntu.com/

Tämä näyttää jo enemmän kuin mitä halusimme. Se, mitä olemme tehneet, edellyttää, että sana alkaa juuri ennen ensimmäistä kirjainta ja päättyy juuri viimeisen jälkeen.

  • Merkit "{" ja "}", joiden välillä on kaksi numeroa pilkulla erotettuna, vastaavat edellistä merkkiä toistamalla kahden numeron osoittaman määrän.

Katsotaan nyt merkkiä, joka on "+": n alkuluku. Se on "*" ja sen toiminta on hyvin samanlainen, vain että se vastaa mitä tahansa merkkien määrää, nolla mukaan lukien. Toisin sanoen se toimii samalla tavalla kuin "+", mutta ei vaadi vasemmalla olevan merkin esiintymistä tekstissä. Yritetään esimerkiksi etsiä niitä osoitteita, jotka alkavat wikistä ja päättyvät org: iin:

grep 'wiki.*org' regex

Katsotaanpa tulos:

ArchLinux: https: //wiki.archlinux.org/ Gentoo: https: //wiki.gentoo.org/ wiki / Main_Page CentOS: http: //wiki.centos.org/ Debian: https: //wiki.debian.org/

Täydellinen.

Nyt viimeinen merkki, jonka aiomme nähdä. "\" - merkkiä käytetään pakenemaan merkki oikealta puolelta niin, että se menettää erityisen merkityksensä. Esimerkiksi: Oletetaan, että haluamme paikantaa pisteellä päättyvät viivat. Ensimmäinen asia, joka meille saattaa tulla, voi olla tämä:

grep '.$' regex

Tulos ei ole etsimämme:

- Luettelo wiki-sivuista:
ArchLinux: https://wiki.archlinux.org/
Gentoo: https://wiki.gentoo.org/wiki/Main_Page
CentOS: http://wiki.centos.org/
Debian: https://wiki.debian.org/
Ubuntu: https://wiki.ubuntu.com/
- Julkaisupäivät: Arch Linux: 11-03-2002
Gentoo: 312
CentOs: 14-05-2004 03:32:38
Debian: 163
Ubuntu: 204
Desde Linux Sääntö.

Tämä johtuu siitä, että "." vastaa mitä tahansa, niin että säännöllinen lauseke vastaa kunkin rivin viimeistä merkkiä riippumatta siitä, mikä se on. Ratkaisu on tämä:

grep '\.$' regex

Nyt tulos on mitä haluamme:

Desde Linux Sääntö.

Peli ohi

Vaikka säännöllisten lausekkeiden aihe on niin monimutkainen, että antaisin artikkelisarjalle, luulen, että olen jo antanut sinulle tarpeeksi tuskaa. Jos olet onnistunut saapumaan, onnittelut. Ja jos olet lukenut kaiken tämän kerralla, ota aspiriini tai jotain, koska se ei voi olla hyvä.

Toistaiseksi siinä kaikki. Jos pidät tästä artikkelista, voit ehkä kirjoittaa toisen. Sillä välin suosittelen, että kokeilet kaikkia terminaalin säännöllisiä lausekkeita nähdäksesi selvästi, miten ne toimivat. Ja muista: Vain Chuck Norris voi jäsentää HTML: n käyttämällä säännöllisiä lausekkeita.


Jätä kommentti

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *

*

*

  1. Vastuussa tiedoista: Miguel Ángel Gatón
  2. Tietojen tarkoitus: Roskapostin hallinta, kommenttien hallinta.
  3. Laillistaminen: Suostumuksesi
  4. Tietojen välittäminen: Tietoja ei luovuteta kolmansille osapuolille muutoin kuin lain nojalla.
  5. Tietojen varastointi: Occentus Networks (EU) isännöi tietokantaa
  6. Oikeudet: Voit milloin tahansa rajoittaa, palauttaa ja poistaa tietojasi.

  1.   Ezequiel dijo

    Mikä olisi elämämme ilman regexiä?
    Artikkeli on erittäin hyödyllinen, mutta luen sen vähitellen. Kiitos paljon.

    1.    hexborg dijo

      Kiitos kommentista. En vieläkään usko, että artikkelini on ilmestynyt. 🙂 Siinä on tullut virheitä, mutta toivon sen olevan hyödyllinen. 🙂

  2.   Scalibur dijo

    Kiitos youssssssss! ..

    Kauan sitten minun piti opiskella vähän säännöllisistä lausekkeista .. .. kiitän sinua opettamisesta .. ja vaiheittaiset ohjeet oppiaksesi kukin niistä

    Erittäin hyvä! .. .. Aion saada sen aspiriinin .. ee

    1.    hexborg dijo

      Ei ongelmaa. Rohkeus ja säännölliset lausekkeet eivät voi olla kanssasi. 🙂

  3.   tanrax dijo

    Upea viesti! Hyvää työtä. Mietin kuinka monta tuntia se vei sinut you

    1.    hexborg dijo

      LOL!! Kysymys kuuluu: Kuinka monta tuntia minulta olisi kulunut, jos olisin sanonut kaiken, mitä aioin sanoa? Ääretön !! 🙂

  4.   Tammuz dijo

    yhtä asiaa en tiennyt, hyvä artikkeli!

    1.    hexborg dijo

      Kiitos. On ilo jakaa se kanssasi.

  5.   helena_ryuu dijo

    hieno selitys. onnittelut! todella hyödyllinen!

    1.    hexborg dijo

      Olen iloinen, että pidit siitä hyödyllisenä. Joten on ilo kirjoittaa

  6.   anti dijo

    Tämän pitäisi mennä johonkin erityiseen. Kuten Esitetyt, mutta joilla on hyvin erityinen hyödyllisyys. Melko hyödyllinen, vaikka haluaisin nähdä sen soveltuvan Vimiin.

    1.    hexborg dijo

      Se on kysymys, kun kysyn itseltäni. Minulla on vielä muutama säännöllistä ilmaisua käsittelevä artikkeli. Ja voisin puhua vimistä heissä. Sillä on joitain eroja siihen, mitä olen selittänyt tässä artikkelissa. Se on asia päästä toimeen. 🙂

  7.   Fernando dijo

    Hyvä!

    Artikkelisi on erittäin hyvä, se on utelias, äskettäin (tällä hetkellä) olen julkaissut verkkosivuillani muutaman päivän ajan valmistelemani merkinnän, johon olen kerännyt luettelon säännöllisten lausekkeiden metamerkeistä ja joitain esimerkkejä. Ja sisäänpääsy on ollut reilua DesdeLinux ja katso artikkeli samasta aiheesta!

    Jos se lohduttaa, minun on paljon enemmän PUSSY Y

    Regex on varmasti yksi hyödyllisimmistä asioista, käytän niitä yleensä komentojen tuotoksen trimmaamiseen ja minua kiinnostavan osan säilyttämiseen ja sitten vuorovaikutuksessa sen kanssa esimerkiksi bash-komentosarjassa. Olen käyttänyt niitä paljon myös yliopistossa, ja niillä on elintärkeä merkitys kääntäjien rakentamisessa (leksikografian ja parserin määritelmässä). Lyhyesti sanottuna koko maailma.

    Terveisiä ja erittäin hyvää työtä.

    1.    hexborg dijo

      Paljon kiitoksia.

      Pidin myös artikkelistasi. Se on suppeampi kuin minun. Se voi toimia pikaviitteenä. On sattumaa, että olemme kirjoittaneet ne samaan aikaan. Voit nähdä, että ihmiset ovat kiinnostuneita aiheesta. 🙂

  8.   Elery dijo

    Säännölliset lausekkeet nukkeille =), nyt minulle on selvää, muuten yksi tapa saada ulostulo värillä grep: lle on luoda aliakseksi .bashrc alias grep = 'grep –color = aina', jos se toimii jollekin.

    terveiset

    1.    hexborg dijo

      Totta. Se on toinen tapa tehdä se. Kiitos panoksestasi. 🙂

  9.   KZKG ^ Gaara dijo

    O_O ... palaute !!! O_O ...
    Paljon kiitoksia viestistä, odotin jotain sellaista jonkin aikaa lol, jätän sen avoimeksi lukea sitä rauhallisesti kotona ilman vaivaa keskittyä lol.

    Kiitos artikkelista, teen todella

    1.    hexborg dijo

      Tiesin, että pidät siitä. LOL!! Totuus on, että monet asiat puuttuvat, mutta minulla on jo toinen osa mielessäni. 🙂

  10.   Eliecer Tates dijo

    Upea artikkeli, jos vain olisin lukenut sen eilen, tänään antamani luokka olisi ollut vieläkin helpompaa oppilailleni!

    1.    hexborg dijo

      LOL!! Harmi, että olen myöhässä, mutta iloinen, että se on hyödyllistä. 🙂

  11.   LeoToro dijo

    Lopuksi !!!, erittäin hyvä viesti .... Löysin vihdoin jotain, joka selittää selvästi säännölliset lausekkeet ... ..

    1.    hexborg dijo

      Siellä on paljon tietoa, mutta on vaikeampaa löytää jotain helposti ymmärrettävää. Olen iloinen, että täytin tuon aukon. 🙂

      Tervehdys.

  12.   Shakespeare Rhodes dijo

    Hei tarvitsen apua, minun on tehtävä haku / var / logs -muodossa: yymmdd, ja lokit tulevat kuten 130901.log -130901.log, minun on etsittävä kaikkia niitä, jotka ovat 1. syyskuuta - 11. lokakuuta. Ainoa asia, jonka onnistuin tekemään, oli poistaa koko syyskuu, mutta en tiedä miten tehdä koko ketju:

    Esim .: 1309 [0-3] palauttaa lokit 1. syyskuuta - 30. syyskuuta, mutta en tiedä miten päästä samaan ketjuun 1. – 11. lokakuuta.

    1.    hexborg dijo

      Sen tekeminen säännöllisten lausekkeiden avulla on vähän monimutkaista. Minusta käy ilmi, että jotain tällaista saattaa toimia:

      13(09[0-3]|10(0|1[01]))

      Se on laajennettu säännöllinen lauseke. Et sano, mitä työkalua käytät, joten en voi antaa sinulle lisätietoja.

      Joka tapauksessa mielestäni näin on säännöllisten lausekkeiden käyttämisen sijaan, on parempi tehdä se etsinnällä. Voit kokeilla jotain tällaista:

      löytö. -uusi '01 syys '-a! -uusi '11 oct '-tulos

      Onnea. Toivottavasti tämä voi auttaa sinua.

  13.   siru dijo

    Hei! Ensinnäkin halusin kiittää teitä työstänne, koska tämä sivu kuuluu parhaiden Linux-sivustojeni 3 parhaan joukkoon.
    Harjoittelin enkä tiennyt, miksi puhelinnumerossa oleva RegExp ei toiminut minulle, ja puuttui "-E" (jonka tajusin tämän viestin ansiosta).
    Halusin kysyä, etkö tiedä mitään hyvää pdf-tiedostoa tai sivustoa, jossa on harjoituksia RegExp: llä, vaikka vähän mielikuvituksella voit harjoitella niiden keksimistä itse.

    Terveisiä, Pablo.

  14.   kutsuvasti dijo

    Erittäin hyvä, luin juuri kaiken, ja kyllä ​​nyt tarvitsen aspiriinia 🙂

  15.   Oscar dijo

    Paras selitys säännöllisistä lausekkeista. Kiitokset kirjailijalle tämän työn jakamisesta.

    Tervehdys.

  16.   Aleksader dijo

    Pidin todella hyvästä selityksestä