Cu Terminal: Folosind expresii regulate

Unul dintre lucrurile pe care le-am iubit întotdeauna la terminalul Linux este ceea ce puteți realiza folosind expresii regulate. Fie că trebuie să găsim un text complicat sau să-l înlocuim cu altceva, utilizarea expresiilor regulate poate simplifica foarte mult lucrarea. Să începem de la început:

AVERTISMENT: Această postare este o durere în fund. Citirea acestui post tot timpul poate provoca pierderea cunoștinței. Faceți pauze între ele sau consultați medicul sau farmacistul înainte de a citi întreaga postare.

Ce este o expresie regulată?

O expresie regulată este o serie de caractere speciale care ne permit să descriem un text pe care dorim să îl găsim. De exemplu, dacă am dori să căutăm cuvântul „linux” ar fi suficient să introducem cuvântul respectiv în programul pe care îl folosim. Cuvântul în sine este o expresie regulată. Până acum pare foarte simplu, dar dacă vrem să găsim toate numerele dintr-un anumit fișier? Sau toate liniile care încep cu o majusculă? În aceste cazuri nu mai puteți pune un cuvânt simplu. Soluția este de a utiliza o expresie regulată.

Expresii regulate vs. modele de fișiere.

Înainte de a intra în subiectul expresiilor regulate, vreau să clarific o neînțelegere comună despre expresiile regulate. O expresie regulată nu este ceea ce punem ca parametru în comenzi precum rm, cp etc. pentru a face referire la diferite fișiere de pe hard disk. Acesta ar fi un model de fișier. Expresiile regulate, deși similare prin faptul că folosesc unele caractere comune, sunt diferite. Un model de fișier este declanșat împotriva fișierelor de pe hard disk și le returnează pe cele care se potrivesc complet cu modelul, în timp ce o expresie obișnuită este declanșată împotriva unui text și returnează liniile care conțin textul căutat. De exemplu, expresia regulată corespunzătoare modelului *.* ar fi ceva de genul ^.*\..*$

Tipuri de expresii regulate.

Nu toate programele folosesc aceleași expresii regulate. Nu cu mult mai puțin. Există mai multe tipuri mai mult sau mai puțin standard de expresii regulate, dar există programe care modifică ușor sintaxa, includ propriile extensii sau chiar folosesc caractere complet diferite. Prin urmare, atunci când doriți să utilizați expresii regulate cu un program pe care nu îl cunoașteți bine, primul lucru de făcut este să consultați manualul sau documentația programului pentru a vedea cum sunt expresiile regulate pe care le recunoaște.

În primul rând, există două tipuri principale de expresii regulate, care sunt conținute în standardul POSIX, ceea ce utilizează instrumentele Linux. Sunt expresiile regulate de bază și extinse. Multe dintre comenzile care funcționează cu expresii regulate, cum ar fi grep sau sed, vă permit să utilizați aceste două tipuri. Voi vorbi despre ele mai jos. Există, de asemenea, expresii regulate în stil PERL și apoi există programe precum vim sau emacs care folosesc variante ale acestora. În funcție de ceea ce vrem să facem, poate fi mai potrivit să folosim una sau alta.

Testarea expresiilor regulate.

Sintaxa expresiilor regulate nu este deloc banală. Când trebuie să scriem o expresie regulată complicată, vom fi în fața unui șir de caractere speciale imposibil de înțeles la prima vedere, așa că pentru a învăța cum să le folosim este esențial să avem un mod de a face toate testele pe care le dorim și le vedem rezultatele cu ușurință. De aceea, voi pune acum câteva comenzi cu ajutorul cărora putem face testele și experimenta tot ce avem nevoie până când dominăm expresiile regulate.

Prima este comanda grep. Aceasta este comanda pe care o vom folosi cel mai frecvent pentru a face căutări. Sintaxa este următoarea:

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

Vă recomand să puneți întotdeauna expresii regulate în ghilimele simple, astfel încât shell-ul să nu se ridice la ea. Prima modalitate este de a găsi o expresie regulată într-un fișier. Al doilea permite filtrarea ieșirii unei comenzi printr-o expresie regulată. În mod implicit, grep folosește expresii regulate de bază. Opțiunea -E este pentru utilizarea expresiilor regulate extinse.

Un truc care ne poate ajuta să vedem cum funcționează expresiile regulate pentru a permite utilizarea culorii în comanda grep. În acest fel, va fi evidențiată partea din text care se potrivește cu expresia regulată pe care o folosim. Pentru a activa culoarea din comanda grep, asigurați-vă că variabila de mediu GREP_OPTIONS conține în valoare --color, care se poate face cu această comandă:

GREP_OPTIONS=--color

O putem pune în .bashrc pentru a o avea întotdeauna activată.

O altă modalitate de a utiliza expresii regulate este folosind comanda sed. Acest lucru este mai potrivit pentru înlocuirea textului, dar poate fi folosit și pentru căutare. Sintaxa pentru aceasta ar fi astfel:

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

Comanda sed folosește în mod implicit expresii regulate de bază, puteți utiliza expresii regulate extinse cu opțiunea -r.

O altă comandă pe care vreau să o numesc și ea este awk. Această comandă poate fi utilizată pentru multe lucruri, deoarece vă permite să scrieți scripturi în propriul limbaj de programare. Dacă vrem să căutăm o expresie regulată într-un fișier sau în ieșirea unei comenzi, modul de utilizare ar fi următorul:

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

Această comandă folosește întotdeauna expresii regulate extinse.

Pentru a face testele noastre, vom avea nevoie și de un text care să ne servească drept exemplu pentru a-l căuta. Putem folosi următorul text:

- 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.

Acesta este textul pe care îl voi folosi pentru exemplele din restul postării, așa că vă recomand să îl copiați într-un fișier pentru a-l avea la îndemână de la terminal. Puteți pune numele dorit. Am numit-o regex.

Începutul lecției.

Acum avem tot ce aveți nevoie pentru a începe testarea expresiilor regulate. Să mergem puțin câte puțin. Voi pune mai multe exemple de căutări cu expresii regulate în care voi explica la ce servește fiecare personaj. Nu sunt exemple foarte bune, dar din moment ce voi avea o postare foarte lungă, nu mai vreau să o complic. Și voi zgâria doar suprafața a ceea ce se poate face cu expresii regulate.

Cel mai simplu dintre toate este să căutăm un anumit cuvânt, de exemplu, să presupunem că dorim să căutăm toate liniile care conțin cuvântul „Linux”. Aceasta este cea mai ușoară, deoarece nu trebuie decât să scriem:

grep 'Linux' regex

Și putem vedea rezultatul:

ArcLinux: https://wiki.archlinux.org/ Arch Linux: 11-03-2002 Din Linux Rulez.

Acestea sunt cele trei linii care conțin cuvântul „Linux” care, dacă am folosit trucul de culoare, va apărea evidențiat. Rețineți că recunoaște cuvântul pe care îl căutăm, chiar dacă face parte dintr-un cuvânt mai lung ca în „ArchLinux”. Cu toate acestea, nu evidențiază cuvântul „linux” care apare în adresa URL „https://wiki.archlinux.org/”. Asta pentru că apare acolo cu litera mică „l” și am căutat-o ​​cu majuscule. Comanda grep are opțiuni pentru acest lucru, dar nu voi vorbi despre ele într-un articol care tratează expresii regulate.

Cu acest test simplu putem trage prima concluzie:

  • Un caracter normal pus într-o expresie regulată se potrivește singur.

Ceea ce înseamnă că dacă puneți litera „a” va căuta litera „a”. Pare logic, nu? 🙂

Acum, să presupunem că vrem să căutăm cuvântul „CentO” urmat de orice caracter, dar numai un singur caracter. Pentru aceasta putem folosi caracterul ".", Care este un wildcard care se potrivește cu orice caracter, dar numai unul:

grep 'CentO.' regex

Iar rezultatul este:

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

Ceea ce înseamnă că include „S” în „CentOS”, deși într-un caz este cu majuscule și în altul cu litere mici. Dacă ar apărea vreun alt personaj în acel loc, ar include și el. Avem deja a doua regulă:

  • Caracterul "." se potrivește cu orice personaj.

Nu mai este atât de banal pe cât părea, dar cu aceasta nu putem face mare lucru. Să mergem puțin mai departe. Să presupunem că vrem să găsim liniile în care apar anii 2002 și 2004. Pare a fi două căutări, dar se pot face simultan astfel:

grep '200[24]' regex

Ceea ce înseamnă că dorim să găsim numărul 200 urmat de 2 sau 4. Iar rezultatul este acesta:

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

Ceea ce ne aduce la a treia regulă:

  • Mai multe caractere cuprinse între paranteze se potrivesc cu oricare dintre caracterele din paranteze.

Parantezele oferă mai mult joc. pot fi folosite și pentru a exclude caractere. De exemplu, să presupunem că dorim să căutăm site-uri unde apare caracterul „:”, dar nu este urmat de „/”. Comanda ar fi astfel:

grep ':[^/]' regex

Este pur și simplu o chestiune de a pune un „^” ca primul caracter în paranteză. Puteți pune mai jos toate personajele dorite. Rezultatul acestei ultime comenzi este următorul:

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/
Arch Linux: 11-03-2002 Gentoo: 31 CentOs: 14-05-2004 03:32:38 Debian: 16 Ubuntu: 20/10/2004

Acum sunt evidențiate „:” din spatele numelor de distribuție, dar nu și cele din adresele URL, deoarece adresele URL au „/” după ele.

  • Punerea caracterului „^” la începutul unei paranteze se potrivește cu orice caracter, cu excepția celorlalte caractere din paranteză.

Un alt lucru pe care îl putem face este să specificăm o gamă de caractere. De exemplu, pentru a căuta orice număr urmat de un „-” ar arăta astfel:

grep '[0-9]-' regex

Cu aceasta specificăm un caracter între 0 și 9 și apoi un semn minus. Să vedem rezultatul:

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

Mai multe intervale pot fi specificate în paranteze pentru a amesteca chiar intervale cu caractere unice.

  • Plasarea a două caractere separate prin „-” între paranteze se potrivește cu orice caracter din interval.

Să vedem acum dacă putem selecta prima parte a adreselor URL. Cel care spune „http” sau „https”. Ele diferă doar în „s” finale, așa că haideți să o facem după cum urmează:

grep -E 'https?' regex

Semnul de întrebare este folosit pentru a face ca caracterul din stânga să fie opțional. Dar acum am adăugat opțiunea -E la comandă. Acest lucru se datorează faptului că interogarea este o caracteristică a expresiilor regulate extinse. Până acum foloseam expresii regulate de bază, deci nu era nevoie să punem nimic. Să vedem rezultatul:

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/

Deci, avem deja o nouă regulă:

  • Un personaj urmat de „?” se potrivește cu acel caracter sau cu niciunul. Acest lucru este valabil numai pentru expresiile regulate extinse.

Acum vom găsi două cuvinte complet diferite. Să vedem cum să găsim liniile care conțin atât cuvântul „Debian”, cât și „Ubuntu”.

grep -E 'Debian|Ubuntu' regex

Cu bara verticală putem separa două sau mai multe expresii regulate diferite și căutăm liniile care se potrivesc cu oricare dintre ele:

Debian: https://wiki.debian.org/
Ubuntu: https://wiki.ubuntu.com/
Debian: 16 / 08 / 1993
Ubuntu: 20 / 10 / 2004
  • Caracterul "|" Este folosit pentru a separa mai multe expresii regulate și a se potrivi cu oricare dintre ele. De asemenea, este specific expresiilor regulate extinse.

Hai sa continuăm. Acum vom căuta cuvântul „Linux”, dar numai acolo unde nu este lipit de un alt cuvânt din stânga. O putem face astfel:

grep '\

Aici caracterul important este „<”, dar trebuie scăpat punând „\” în fața lui, astfel încât grep să-l interpreteze ca un caracter special. Rezultatul este după cum urmează:

Arc Linux: 11-03-2002 Din Linux Rulez.

De asemenea, puteți utiliza „\>” pentru a căuta cuvinte care nu sunt una lângă alta. Să mergem cu un exemplu. Să încercăm această comandă:

grep 'http\>' regex

Rezultatul pe care îl produce este următorul:

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

„Http” a ieșit, dar nu „https”, deoarece în „https” există încă un caracter în dreapta „p” care poate face parte dintr-un cuvânt.

  • Caracterele „<” și „>” se potrivesc la începutul și, respectiv, la sfârșitul unui cuvânt. Aceste caractere trebuie evitate, astfel încât să nu fie interpretate ca caractere literale.

Mergem cu lucrurile puțin mai complicate. Caracterul „+” se potrivește cu caracterul din stânga repetat cel puțin o dată. Acest caracter este disponibil numai cu expresii regulate extinse. Cu el putem căuta, de exemplu, secvențe de mai multe numere la rând care încep cu „:”.

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

rezultat:

CentOs: 14 05: 32: 38

Numărul 38 este, de asemenea, evidențiat, deoarece începe și cu „:”.

  • Caracterul „+” se potrivește cu caracterul din stânga, repetat cel puțin o dată.

De asemenea, puteți controla numărul de repetări folosind „{” și „}”. Ideea este să punem în paranteze un număr care să indice numărul exact de repetări dorit. De asemenea, puteți pune o gamă. Să vedem exemple din cele două cazuri.

Mai întâi vom găsi toate secvențele din patru cifre care există:

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

Rețineți că parantezele curate trebuie evitate dacă folosim expresii regulate de bază, dar nu dacă folosim expresii extinse. Cu extins ar fi așa:

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

Și rezultatul în ambele cazuri ar fi acesta:

ArchLinux: 11-03-2002
Gentoo: 31/03 /2002
CentOS: 14-05-2004 03:32:38
Debian: 16/08/1993
Ubuntu: 20/10 /2004
  • Caracterele „{” și „}” cu un număr între ele se potrivesc cu caracterul anterior și au repetat numărul specificat de ori.

Acum celălalt exemplu cu bretele. Să presupunem că vrem să găsim cuvinte care au între 3 și 6 litere mici. Am putea face următoarele:

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

Iar rezultatul ar fi acesta:

- THEISTA de paginăs Wiki: LARCHLinux: https:/ /Wiki.ArchLinux.org/ Gdeopotrivă: https:/ /Wiki.gentoos.org/Wiki/Main_Pvârstă
CORLSistem de operare: http:/ /Wiki.cenți.org/ Debian: https:/ /Wiki.Debian.org/ SAUUbuntu: https:/ /Wiki.ubuntu.com/ - Fratezi de lansa: LARCH Linux: 11-03-2002 Gdeopotrivă: 31 CORLOs: 14-05-2004 03:32:38
Debian: 16 UUbuntu: 20/10/2004 DEste Linux Rulez.

Care, după cum puteți vedea, nu seamănă prea mult cu ceea ce ne-am dorit. Asta pentru că expresia regulată găsește literele în alte cuvinte care sunt mai lungi. Să încercăm această altă versiune:

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

rezultat:

- Lista paginilor Wiki: ArchLinux: https:/ /Wiki.archlinux.org/ Gentoo: https:/ /Wiki.gentoos.org/Wiki/ Main_Page CentOS: http:/ /Wiki.cenți.org/ Debian: https:/ /Wiki.Debian.org/ Ubuntu: https:/ /Wiki.ubuntu.com/

Asta pare deja mai mult ca ceea ce ne-am dorit. Ceea ce am făcut este să cerem ca cuvântul să înceapă chiar înainte de prima literă și să se încheie imediat după ultima.

  • Caracterele „{” și „}” cu două numere între ele separate printr-o virgulă se potrivesc cu caracterul anterior, repetând numărul de ori indicat de cele două numere.

Să vedem acum un personaj care este un prim al „+”. Este „*” și funcționarea sa este foarte similară, doar că se potrivește cu orice număr de caractere, inclusiv zero. Adică, face același lucru cu „+”, dar nu necesită ca caracterul din stânga lui să apară în text. De exemplu, să încercăm să căutăm acele adrese care încep pe wiki și se termină pe org:

grep 'wiki.*org' regex

Să vedem rezultatul:

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

Perfect.

Acum, ultimul personaj pe care îl vom vedea. Caracterul „\” este folosit pentru a scăpa de personajul din dreapta lui, astfel încât să-și piardă semnificația specială. De exemplu: Să presupunem că dorim să localizăm liniile care se termină într-un punct. Primul lucru care ni s-ar putea întâmpla ar putea fi acesta:

grep '.$' regex

Rezultatul nu este ceea ce căutăm:

- Lista paginilor 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/
- Date de lansare: Arch Linux: 11-03-2002
Gentoo: 312
CentOs: 14-05-2004 03:32:38
Debian: 163
Ubuntu: 20/10/2004
Desde Linux Rulez.

Acest lucru se datorează faptului că „.” se potrivește cu orice, astfel încât expresia regulată să se potrivească cu ultimul caracter al fiecărei linii indiferent de ce este. Soluția este următoarea:

grep '\.$' regex

Acum rezultatul este ceea ce dorim:

Desde Linux Rulez.

Joc peste

Deși subiectul expresiilor regulate este atât de complex încât aș da pentru o serie de articole, cred că ți-am dat deja suficientă durere. Dacă ați reușit să ajungeți, felicitări. Și dacă ați citit toate acestea într-o singură ședință, luați o aspirină sau ceva, pentru că nu poate fi bine.

Deocamdată asta e tot. Dacă îți place acest articol, poate poți scrie altul. Între timp, vă recomand să încercați toate expresiile regulate din terminal pentru a vedea clar cum funcționează. Și amintiți-vă: numai Chuck Norris poate analiza HTML folosind expresii regulate.


Lasă comentariul tău

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

*

*

  1. Responsabil pentru date: Miguel Ángel Gatón
  2. Scopul datelor: Control SPAM, gestionarea comentariilor.
  3. Legitimare: consimțământul dvs.
  4. Comunicarea datelor: datele nu vor fi comunicate terților decât prin obligație legală.
  5. Stocarea datelor: bază de date găzduită de Occentus Networks (UE)
  6. Drepturi: în orice moment vă puteți limita, recupera și șterge informațiile.

  1.   Ezechiel el a spus

    Ce ar fi viața noastră fără regex?
    Articolul este foarte util, dar îl voi citi încetul cu încetul. Mulțumesc mult.

    1.    hexborg el a spus

      Vă mulțumesc pentru comentariu. Încă nu cred că articolul meu a ieșit. 🙂 A ieșit cu o anumită eroare, dar sper că este util. 🙂

  2.   Scalibur el a spus

    Mulțumescssssssss! ..

    Cu ceva timp în urmă a trebuit să studiez puțin despre expresiile regulate .. .. Vă mulțumesc pentru predare .. și ghidul pas cu pas pentru a învăța fiecare dintre ele ..

    Foarte bine! .. .. O să iau aspirina aia .. ee

    1.    hexborg el a spus

      Cu plăcere. Curaj și că expresiile obișnuite nu pot fi la tine. 🙂

  3.   tanrax el a spus

    Post fantastic! Buna treaba. Mă întreb câte ore ți-a luat 😀

    1.    hexborg el a spus

      LAUGH OUT LOUD!! Întrebarea este: câte ore mi-ar fi luat dacă aș fi spus tot ce intenționam să spun? Infinit !! 🙂

  4.   Tammuz el a spus

    un lucru pe care nu îl știam, articol bun!

    1.    hexborg el a spus

      Mulțumesc. Este o plăcere să o împărtășesc cu voi.

  5.   helena_ryuu el a spus

    mare explicație. felicitari! cu adevarat util!

    1.    hexborg el a spus

      Mă bucur că ți s-a părut util. Deci este o plăcere să scriu

  6.   anti el a spus

    Acest lucru ar trebui să meargă undeva special. La fel ca prezentarea, dar care au o utilitate foarte specifică. Destul de util, deși aș vrea să-l văd aplicat la Vim.

    1.    hexborg el a spus

      Aceasta este o întrebare de a mă întreba. Mai am câteva articole despre expresii regulate. Și aș putea vorbi despre vim în ele. Are unele diferențe față de ceea ce am explicat în acest articol. Este o chestiune de a continua cu asta. 🙂

  7.   Fernando el a spus

    Bun!

    Articolul tau este foarte bun, este curios, recent (chiar acum) am publicat pe site-ul meu o intrare pe care o pregateam de cateva zile in care am adunat o lista de metacaractere pentru expresii regulate si cateva exemple. Și a fost corect să intri DesdeLinux și vezi o intrare pe aceeași temă!

    Dacă este vreo mângâiere, a mea este MULȚI MAI MULȚI 😀

    Cu siguranță, regexul este unul dintre cele mai utile lucruri, de obicei le folosesc pentru a tăia ieșirea comenzilor și a păstra partea care mă interesează și apoi să interacționez cu ea într-un script bash, de exemplu. De asemenea, le-am folosit foarte mult la universitate și sunt de o importanță vitală în construcția de compilatoare (în definiția lexicografică și parsere). Pe scurt, o lume întreagă.

    Salutări și muncă foarte foarte bună.

    1.    hexborg el a spus

      Mulţumesc mult.

      Mi-a plăcut și articolul tău. Este mai concis decât al meu. Poate servi drept referință rapidă. Este o coincidență faptul că le-am scris în același timp. Puteți vedea că oamenii sunt interesați de subiect. 🙂

  8.   Elery el a spus

    Expresii obișnuite pentru manechine =), acum este mai clar pentru mine, apropo, o modalitate de a avea ieșirea cu culoare pentru grep, este prin crearea unui alias în .bashrc alias grep = 'grep –color = întotdeauna', în cazul în care funcționează pentru cineva.

    În ceea ce priveşte

    1.    hexborg el a spus

      Adevărat. Acesta este un alt mod de a face acest lucru. Vă mulțumim pentru contribuție. 🙂

  9.   KZKG ^ Gaara el a spus

    O_O ... bucată de contribuție !!! O_O ...
    Multumesc mult pentru postare, asteptam asa ceva o vreme lol, il las deschis sa citesc calm acasa cu zero batai de cap sa se concentreze lol.

    Mulțumesc pentru articol, chiar do

    1.    hexborg el a spus

      Știam că ți-ar plăcea. LAUGH OUT LOUD!! Adevărul este că lipsesc multe lucruri, dar am deja o a doua parte în minte. 🙂

  10.   Eliecer Tates el a spus

    Super articol, dacă l-aș fi citit ieri, ora pe care am dat-o astăzi ar fi fost și mai ușoară pentru elevii mei!

    1.    hexborg el a spus

      LAUGH OUT LOUD!! Pacat ca am intarziat, dar ma bucur ca este util. 🙂

  11.   LeoToro el a spus

    În sfârșit !!!, foarte bine postarea .... Am găsit în cele din urmă ceva care explică clar expresiile regulate ... ..

    1.    hexborg el a spus

      Există multe informații acolo, dar este mai dificil să găsești ceva ușor de înțeles. Mă bucur că am umplut acel gol. 🙂

      Salutări.

  12.   Shakespeare Rhodes el a spus

    Hei, am nevoie de ajutor, trebuie să fac o căutare în / var / logs cu formatul: yymmdd, iar jurnalele vin ca 130901.log -130901.log, trebuie să caut toate cele care sunt între 1 septembrie și 11 octombrie , Singurul lucru pe care am reușit să-l fac a fost să elimin tot septembrie, dar nu știu cum să fac lanțul complet:

    ex: 1309 [0-3] îmi returnează jurnalele între 1 septembrie și 30 septembrie, dar nu știu cum să intru și în același lanț de la 1 la 11 octombrie.

    1.    hexborg el a spus

      A face acest lucru folosind expresii regulate este un pic complicat. Mi se pare că așa ceva ar putea funcționa:

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

      Este o expresie regulată extinsă. Nu spuneți ce instrument utilizați, așa că nu vă pot oferi mai multe detalii.

      Oricum, cred că acesta este cazul în loc să folosiți expresii regulate, este mai bine să o faceți cu find. Puteți încerca așa ceva:

      găsi. -newermt '01 sep '-a! -newermt '11 oct '-print

      Noroc. Sper că acest lucru vă poate ajuta.

  13.   chipo el a spus

    Bună ziua! În primul rând, am vrut să vă mulțumesc pentru munca depusă, deoarece această pagină se află în „top 3” dintre cele mai bune site-uri Linux.
    Practicam și nu știam de ce nu mi-a funcționat un RegExp pe un număr de telefon și că îmi lipsea „-E” (lucru pe care mi l-am dat seama datorită acestei postări).
    Am vrut să vă întreb dacă nu cunoașteți niciun pdf sau site bun în care există exerciții pe RegExp, deși cu puțină imaginație puteți practica inventarea lor personal.

    Salutări, Pablo.

  14.   calm el a spus

    Foarte bine, tocmai am citit totul și da, acum am nevoie de aspirină 🙂

  15.   Oscar el a spus

    Cea mai bună explicație pe care am văzut-o despre expresiile regulate. Mulțumesc autorului pentru că a împărtășit această lucrare.

    Un salut.

  16.   alexander el a spus

    Mi-a plăcut foarte mult o explicație foarte bună