Amb el Terminal: Ús d'expressions regulars

Una de les coses que sempre m'ha encantat de la terminal de Linux és el que es pot aconseguir utilitzant expressions regulars. Tant si necessitem buscar un text complicat com reemplaçar-ho per una altra cosa, fer servir expressions regulars pot simplificar la feina enormement. Comencem pel principi:

ADVERTÈNCIA: Aquest post és un conyàs. Llegir aquest post tot seguit pot provocar pèrdua de consciència. Feu pauses al mig o consulti al seu metge o farmacèutic abans de llegir tot el post.

Què és una expressió regular?

Una expressió regular és una sèrie de caràcters especials que permeten descriure un text que volem cercar. Per exemple, si volguéssim buscar la paraula «linux» n'hi hauria prou posar aquesta paraula en el programa que utilitzem. La pròpia paraula és una expressió regular. Fins aquí sembla molt simple, però, ¿i si volem buscar tots els números que hi ha en un determinat fitxer? O totes les línies que comencen per una lletra majúscula? En aquests casos ja no es pot posar una simple paraula. La solució és utilitzar una expressió regular.

Expressions regulars vs patrons de fitxers.

Abans de començar a entrar en matèria sobre les expressions regulars, vull aclarir un malentès comú sobre les expressions regulars. Una expressió regular no és el que posem com a paràmetre en els ordres com rm, cp, etc per fer referència a diversos fitxer que hi ha al disc dur. Això seria un patró de fitxers. Les expressions regulars, encara que s'assemblen en que fan servir alguns caràcters comuns, són diferents. Un patró de fitxer es llança contra els fitxers que hi ha al disc dur i torna els que encaixen completament amb el patró, mentre que una expressió regular es llança contra un text i retorna les línies que contenen el text cercat. Per exemple, l'expressió regular corresponent a el patró *.* seria alguna cosa així com ^.*\..*$

Tipus d'expressions regulars.

No tots els programes utilitzen les mateixes expressions regulars. Ni de bon tros. Hi ha diversos tipus d'expressions regulars més o menys estàndard, però hi ha programes que canvien lleugerament la sintaxi, que inclouen les seves pròpies extensions o fins i tot que utilitzen uns caràcters completament diferents. Per això, quan vulgueu fer servir expressions regulars amb algun programa que no conegueu bé, el primer és mirar el manual o la documentació de el programa per veure com són les expressions regulars que reconeix.

En primer lloc, hi ha dos tipus principals d'expressions regulars, que estan recollides en l'estàndard POSIX, que és el que fan servir les eines de Linux. Són les expressions regulars bàsiques i les esteses. Molts dels comandaments que treballen amb expressions regulars, com grep o sed, permeten utilitzar aquests dos tipus. Més avall parlaré d'ells. També hi ha les expressions regulars estil PERL, i després hi ha programes com vim o emacs que fan servir variants d'aquestes. Segons el que vulguem fer pot ser més adequat utilitzar unes o altres.

Provant expressions regulars.

La sintaxi de les expressions regulars no és gens trivial. Quan tinguem d'escriure una expressió regular complicada estarem davant d'un seguit de caràcters especials impossibles d'entendre a primera vista, així que per aprendre a usar-les és imprescindible comptar amb una forma de fer totes les proves que vulguem i veure els resultats fàcilment. Per això vaig a posar ara diversos comandaments amb els quals podrem fer les proves i experimentar tot el que necessitem fins que tinguem les expressions regulars dominades.

El primer d'ells és la comanda grep. Aquest és el comandament que farem servir amb més freqüència per fer cerques. La sintaxi és la següent:

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

Recomano posar sempre les expressions regulars entre cometes simples perquè el shell no ens faci de les seves. La primera forma serveix per buscar una expressió regular en un fitxer. La segona permet filtrar la sortida d'una ordre a través d'una expressió regular. Per defecte, grep fa servir expressions regulars bàsiques. L'opció -E és per a usar expressions regulars esteses.

Un truc que ens pot ajudar a veure el funcionament de les expressions regulars és activar l'ús del color en la comanda grep. D'aquesta manera, apareixerà ressaltada la part de el text que aparella amb l'expressió regular que estem fent servir. Per actuar sobre el color en la comanda grep n'hi ha prou amb assegurar que la variable d'entorn GREP_OPTIONS contingui en valor --color, Cosa que es pot fer amb aquesta comanda:

GREP_OPTIONS=--color

Podem posar-lo al .bashrc per tenir-lo activat sempre.

Una altra forma d'utilitzar expressions regulars és mitjançant la comanda set. Aquest és més adequat per reemplaçar text, però també pot usar-se per fer cerques. La sintaxi per a això seria així:

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

La comanda set també usa expressions regulars bàsiques per defecte, es poden fer servir expressions regulars esteses amb l'opció -r.

Una altra ordre que també vull anomenar és awk. Aquesta comanda pot usar-se per a moltes coses, ja que permet escriure scripts en el seu propi llenguatge de programació. Si el que volem és buscar una expressió regular en un fitxer o en la sortida d'una ordre, la forma d'usar-lo seria la següent:

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

Aquesta comanda fa servir sempre expressions regulars esteses.

Per fer les nostres proves també necessitarem un text que ens serveixi com a exemple per fer cerques en ell. Podem utilitzar el següent 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.

Aquest és el text que faré servir per als exemples de la resta de l'post, així que us recomano que ho copieu en un fitxer per tenir-lo a mà des de la terminal. Podeu posar el nom que vulgueu. Jo ho he trucant regex.

Entrant en matèria.

Ara ja tenim tot el necessari per començar a provar les expressions regulars. Anem a pams. Vaig a posar diversos exemples de recerques amb expressions regulars en els quals aniré explicant per a què serveix cada caràcter. No són exemples molt bons, però com em va a quedar un post molt llarg no vull complicar-ho més. I això que només vaig a esgarrapar la superfície del que es pot fer amb expressions regulars.

El més senzill de tot és buscar una paraula concreta, per exemple, suposem que volem buscar totes les línies que continguin la paraula "Linux". Això és el més fàcil, ja que només hem d'escriure:

grep 'Linux' regex

I podrem veure el resultat:

ArcLinux: Https://wiki.archlinux.org/ Arch Linux: 11 Des Linux Rulez.

Aquestes són les tres línies que contenen la paraula "Linux" la qual, si hem usat el truc de la color, apareixerà ressaltada. Fixeu-vos que reconeix la paraula que estem buscant encara formi part d'una paraula més llarga com a «ArchLinux». No obstant això, no ressalta la paraula «linux» que apareix a la URL «https://wiki.archlinux.org/». Això és perquè aquí apareix amb la «l» minúscula i l'hem buscat en majúscula. La comanda grep té opcions per això, però no vaig a parlar-ne en un article que tracta sobre expressions regulars.

Amb aquesta senzilla prova podem treure la primera conclusió:

  • Un caràcter normal posat en una expressió regular aparella amb si mateix.

El que ve a dir que si poses la lletra "a" buscarà la lletra "a". Sembla lògic, oi? 🙂

Suposem ara que volem buscar la paraula «Cento» seguida de qualsevol caràcter, però només un únic caràcter. Per això podem fer servir el caràcter «.», Que és un comodí que aparella amb un caràcter qualsevol, però només un:

grep 'CentO.' regex

I el resultat és:

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

El que vol dir que inclou la «S» de «CentOS» tot i que en un cas és majúscula i en un altre minúscula. Si aparegués en aquest lloc qualsevol altre caràcter també ho inclouria. Ja tenim la segona regla:

  • El caràcter «.» aparella amb qualsevol caràcter.

Ja no és tan trivial com semblava, però amb això no podem fer molt. Avancem una mica més. Anem a suposar que volem trobar les línies en què apareix l'any 2002 i el 2004. Semblen dues recerques, però es poden fer d'una sola vegada així:

grep '200[24]' regex

El que vol dir que volem buscar el número 200 seguit del 2 o el 4. I el resultat és aquest:

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

El que ens porta a la tercera regla:

  • Diversos caràcters tancats entre claudàtors s'aparellen amb qualsevol dels caràcters que hi ha dins dels claudàtors.

Els claudàtors donen més joc. també es poden utilitzar per excloure caràcters. Per exemple, suposem que volem buscar els llocs en els quals apareix el caràcter «:», però que no vagi seguit de «/». La comanda seria així:

grep ':[^/]' regex

Es tracta simplement de posar un «^» com a primer caràcter dins el claudàtor. Es poden posar a continuació tots els caràcters que es vulguin. El resultat d'aquest últim comanda és el següent:

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

Ara apareixen ressaltats els «:» que hi ha darrere dels noms de les distros, però no els que hi ha a les URL perquè els de les URL porten «/» a continuació.

  • Posar el caràcter «^» a el principi d'un claudàtor aparella amb qualsevol caràcter excepte amb els altres caràcters de el claudàtor.

Una altra cosa que podem fer és especificar un rang de caràcters. Per exemple, per buscar qualsevol número seguit d'un «-» seria així:

grep '[0-9]-' regex

Amb això estem especificant un caràcter entre 0 i 9 i, a continuació, un signe menys. Vegem el resultat:

Arch Linux: 11-03-2002 CentOS: 14-05-2004 03: 32: 38

Es poden especificar diversos rangs dins dels claudàtors a fins i tot barrejar rangs amb caràcters solts.

  • Col · locar dos caràcters separats per «-» dins dels claudàtors aparella amb qualsevol caràcter dins el rang.

Anem a veure ara si podem seleccionar la primera part de les URL. La que posa "http" o "https». Només es diferencien en la «s» final, així que anem a fer-ho de la següent manera:

grep -E 'https?' regex

La interrogació serveix per fer que el caràcter que hi ha a la seva esquerra sigui opcional. Però ara hem afegit l'opció -E a la comanda. Això és perquè la interrogació és una característica de les expressions regulars esteses. Fins ara estàvem usant expressions regulars bàsiques, així que no calia posar res. Vegem el resultat:

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/

O sigui que ja tenim una nova regla:

  • Un caràcter seguit de «?» aparella amb aquest caràcter o amb cap. Això només és vàlid per a expressions regulars esteses.

Ara anem a buscar dues paraules completament diferents. Anem a veure com buscar les línies que continguin tant la paraula «Debian» com «Ubuntu».

grep -E 'Debian|Ubuntu' regex

Amb la barra vertical podem separar dues o més expressions regulars diferents i buscar les línies que aparellin amb qualsevol d'elles:

Debian: https://wiki.debian.org/
Ubuntu: https://wiki.ubuntu.com/
Debian: 16 / 08 / 1993
Ubuntu: 20 / 10 / 2004
  • El caràcter «|» serveix per separar diverses expressions regulars i aparella amb qualsevol d'elles. També és específic de les expressions regulars esteses.

Continuem. Ara anem a buscar la paraula "Linux", però només on no estigui enganxada a una altra paraula per l'esquerra. Podem fer-ho així:

grep '\

Aquí el caràcter important és «<«, però cal escaparlo col·locant «\» davant perquè grep ho interpreti com un caràcter especial. El resultat és el següent:

Arc Linux: 11 Des Linux Rulez.

També es pot usar «\>» per buscar paraules que no estiguin enganxades a altres per la dreta. Anem amb un exemple. Provem aquesta comanda:

grep 'http\>' regex

El resultat que produeix és aquest:

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

Ha sortit "http", però no «https», perquè en «https» encara hi ha un caràcter a la dreta de la «p» que pot formar part d'una paraula.

  • Els caràcters «<» i «>» s'aparellen amb el principi i el final d'una paraula, respectivament. Cal escapar aquests caràcters perquè no s'interpretin com a caràcters literals.

Anem amb coses una mica més complicades. El caràcter «+» aparella amb el caràcter que apareix a la seva esquerra repetit al menys una vegada. Aquest caràcter només està disponible amb les expressions regulars esteses. Amb ell podem buscar, per exemple, seqüències de diversos nombres seguits que comencin amb «:».

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

resultat:

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

Queda ressaltat també el nombre 38 perquè també comença amb «:».

  • El caràcter «+» aparella amb el caràcter que apareix a la seva esquerra repetit al menys una vegada.

També es pot controlar el nombre de repeticions usant «{» i «}». La idea és col·locar entre claus un nombre que indica el nombre exacte de repeticions que volem. També es pot posar un rang. Anem a veure exemples dels dos casos.

Primer anem a buscar totes les seqüències de quatre dígits que hi hagi:

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

Fixeu-vos en què cal escapar les claus si estem fent servir expressions regulars bàsiques, però no si fem servir les esteses. Amb esteses seria així:

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

I el resultat en els dos casos seria aquest:

Arch Linux: 11-03-2002
Gentoo: 31/03 /2002
CentOS: 14-05-2004 03:32:38
Debian: 16/08/1993
Ubuntu: 20/10 /2004
  • Els caràcters «{» i «}» amb un nombre entre ells s'aparellen amb el caràcter anterior repetit el nombre de vegades indicat.

Ara l'altre exemple amb les claus. Suposem que volem trobar paraules que tinguin entre 3 i 6 lletres minúscules. Podríem fer el següent:

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

I el resultat seria aquest:

- Lpalau de pàginas wiki: ArchLinux: https: //wiki.Archlinux.org/ Gentoo: https: //wiki.gentoo.org/wiki/Main_Pedat
CentOS: http: //wiki.centos.org/ Debian: https: //wiki.debian.org/ Ucarreró sense sortida: https: //wiki.ubuntu.com/ - Ffas de llançament: Arch Linux: 11 Gentoo: 31/03/2002 CentOs: 14-05-2004 03:32:38
Debian: 16 Ucarreró sense sortida: 20/10/2004 Des de Linux Rulez.

Que, com veieu, no s'assembla molt al que volíem. Això és perquè l'expressió regular troba les lletres dins d'altres paraules que són més llargues. Provem amb aquesta altra versió:

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

resultat:

- Llista de pàgines 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/

Això ja s'assembla més al que volíem. El que hem fet és exigir que la paraula comenci just davant de la primera lletra i acabi just darrere de l'última.

  • Els caràcters «{» i «}» amb dos nombres entre ells separats per una coma s'aparellen amb el caràcter anterior repetit el nombre de vegades indicat pels dos nombres.

Vegem ara un caràcter que és primer de «+». Es tracta de «*» i el seu funcionament és molt semblant només que aparella amb qualsevol nombre de caràcters inclòs zero. O sigui que fa el mateix que el «+» però no exigeix ​​que el caràcter de la seva esquerra aparegui en el text. Per exemple, provem a buscar aquestes adreces que comencen en wiki i acaben a org:

grep 'wiki.*org' regex

Anem a veure el resultat:

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

Perfecte.

Ara l'últim caràcter que veurem. El caràcter «\» serveix per escapar el caràcter de la seva dreta de manera que perdi el significat especial que té. Per exemple: Suposem que volem localitzar la línies que acabin en punt. El primer que se'ns podria ocórrer podria ser això:

grep '.$' regex

El resultat no és el que busquem:

- Llista de pàgines 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/
- Dates de llançament: Arch Linux: 11-03-2002
Gentoo: 31/03/2002
CentOs: 14-05-2004 03:32:38
Debian: 16/08/1993
Ubuntu: 20/10/2004
Des Linux rulez.

Això és perquè el caràcter «.» aparella amb qualsevol cosa, així que aquesta expressió regular aparella amb l'últim caràcter de cada línia sigui el que sigui. La solució és aquesta:

grep '\.$' regex

Ara el resultat sí que és el que volem:

Des Linux rulez.

Fi del joc

Tot i que el tema de les expressions regulars és tan complex que donaria per a una sèrie d'articles, crec que ja us he donat el conyàs suficient. Si heu aconseguit arribar, enhorabona. I si heu llegit tot això d'una sola vegada, prendre-una aspirina o alguna cosa, perquè no pot ser bo.

Per ara això és tot. Si aquest article agrada, potser pugui escriure un altre. Mentrestant us recomano provar totes les expressions regulars a la terminal per veure clarament com funcionen. I recordeu: Només Chuck Norris pot parsejar HTML usant expressions regulars.

 


El contingut d'l'article s'adhereix als nostres principis de ètica editorial. Per notificar un error punxa http://secbcaixabank.info/SECB-COVIDXNUMX-DENUNCIA-INSPECCION-PROTOCOLO-.pdf.

28 comentaris, deixa el teu

Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.

  1.   ezequiel va dir

    Que seria de la nostra vida sense les regex?
    Molt útil l'article, però ho aniré llegint de poc. Moltes gràcies.

    1.    hexborg va dir

      Gràcies a tu per fer comentaris. Encara no em crec que hagi sortit el meu article. 🙂 Ha sortit amb algun error, però espero que sigui útil. 🙂

  2.   SCALIBUR va dir

    Graciasssssssss! ..

    Fa temps que em havia d'estudiar una mica sobre expressions regulars .. ..te agredezco la enseñanza..y la guia pas a pas per anar aprenent cada un d'ells ..

    Molt bo! .. ..voy a per aquesta aspirina .. ee

    1.    hexborg va dir

      De res. Ànim i que les expressions regulars no puguin amb tu. 🙂

  3.   Tanrax va dir

    ¡Fantático post! Gran treball. Em pregunto quantes hores et deu haver costat 😀

    1.    hexborg va dir

      ¡Jajaja !! La pregunta és: Quantes hores m'hauria costat si hagués dit tot el que tenia intenció de dir? ¡Infinites !! 🙂

  4.   Tammuz va dir

    una cosa q no sàvia, bon article!

    1.    hexborg va dir

      Gràcies. És un plaer compartir-ho amb vosaltres.

  5.   helena_ryuu va dir

    magna explicació. felicitacions !, realment útil!

    1.    hexborg va dir

      M'alegro que t'hagi semblat útil. Així dóna gust escriure.

  6.   contra va dir

    Això hauria d'anar en algun lloc especial. Com els Destacats però que tinguin una utilitat molt específica. Bastant útil, encara que m'agradaria veure-ho aplicat a Vim.

    1.    hexborg va dir

      Això és qüestió de plantejar-m'ho. Tinc en ment alguns articles més sobre expressions regulars. I podria parlar d'vim en ells. Té algunes diferències respecte al que he explicat en aquest article. És qüestió de posar-me amb això. 🙂

  7.   Fernando va dir

    Bones!

    Molt bo el teu article, és curiós, recentment (ara mateix) he publicat en el meu web una entrada que portava preparant des de fa uns dies on he recollit una llista de metacaracteres per a les expressions regulars i alguns exemples. I ha estat just entrar a DesdeLinux i veure una entrada sobre la mateixa temàtica!

    Si et serveix de consol, la meva és BASTANT MÉS conyàs 😀

    Certament les regex són una de les coses més útils, jo les utilitzo normalment per retallar la sortida de les ordres i quedar-me amb la part que m'interessa, per després interactuar amb ella en un script bash, per exemple. També les he utilitzat molt en la universitat, i són de vital importància en la construcció dels compiladors (en la definició dels analitzadors lexicogràfics i sintàctics). En definitiva, tot un món.

    Una salutació i molt molt bona feina.

    1.    hexborg va dir

      Moltes gràcies.

      També m'ha agradat el teu article. És més concís que el meu. Pot servir com a referència ràpida. Sí que és casualitat que els hàgim escrit alhora. Es veu que a la gent li interessa el tema. 🙂

  8.   Ellery va dir

    Expressions regulars for dummies =), ara em queda mes clar, per cert una forma per tenir les sortida amb color per grep, és creant un àlies a .bashrc àlies grep = 'grep -color = always', per si a algú li serveix .

    Salutacions

    1.    hexborg va dir

      És cert. Aquesta és una altra forma d'aconseguir-ho. Gràcies per l'aportació. 🙂

  9.   KZKG ^ Gaara va dir

    O_O ... tros d'aportació !!! O_O ...
    Moltes gràcies pel post, estava esperant alguna cosa així des de fa un temps jejejeje, ja ho deixo obert per llegir-lo amb calma a casa amb zero molèsties per concentrar-me jejejeje.

    Gràcies per l'article, de debò que sí 😀

    1.    hexborg va dir

      Sabia que t'anava a agradar. ¡Jajajaja !! La veritat és que li falten moltes coses, però ja tinc pensada una segona part. 🙂

  10.   Eliécer Tatés va dir

    Genial article, si només ho hagués llegit ahir, la classe que vaig donar avui hagués estat més fàcil encara per als meus estudiants!

    1.    hexborg va dir

      ¡Jajajaja !! Llàstima haver arribat tard, però m'alegro que sigui útil. 🙂

  11.   LeoToro va dir

    Per fi !!!, super bo el post ... .per fi vaig trobar una cosa que expliqués clarament les expressions regulars ... ..

    1.    hexborg va dir

      Hi ha molta informació per aquí, però és més dificill trobar alguna cosa que sigui fàcil d'entendre. M'alegro d'haver cobert aquest buit. 🙂

      Salutacions.

  12.   Shakespeare Rodes va dir

    Hey necessito ajuda, he de fer una cerca a / var / logs amb el format: yymmdd, i els logs vénen així 130901.log -130901.log, he de buscar tots els que són compresos entre 1 de setembre a l'11 d'octubre, l'únic que vaig aconseguir fer va ser treure tots els de setembre però no com fer la cadena completa:

    ex: 1309 [0-3] em torna els logs compresos entre l'1 a l'30 de setembre, però no sé com treure també en la mateixa cadena de l'1 a l'11 d'octubre.

    1.    hexborg va dir

      Per fer-ho mitjançant expressions regulars és una mica complicat. Se m'ocorre que podria funcionar alguna cosa com això:

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

      És una expressió regular estesa. No dius que eina estàs fent servir, així que no et puc donar més detalls.

      De totes maneres jo crec que és aquest cas en comptes d'usar expressions regulars és millor fer-ho amb find. Pots provar alguna cosa com això:

      find. -newermt '01 set '-a! -newermt '11 octubre '-print

      Sort. Espero que et serveixi.

  13.   chipo va dir

    Hola !, primer de tot volia agrair-te per la teva labor ja que aquesta pàgina està dins del meu «top 3» de millors llocs sobre Linux.
    Estava practicant i no sabia per què no em funcionava una RegExp sobre un número de telèfon i era que em faltava el «-E» (que em vaig adonar gràcies a aquest post).
    Volia consultar-te si no conocés algun bon pdf o lloc on hi hagi exercicis sobre RegExp, encara que si bé amb una mica d'imaginació es pot practicar inventándolos un mateix.

    Salutacions, Pablo.

  14.   caly va dir

    Molt bo, acabo de llegir-ho tot, i sí ara necessito una aspirina 🙂

  15.   Óscar va dir

    La millor explicació que he vist de les expressions regulars. El meu agraïment a l'autor per compartir aquest treball.

    Una salutació.

  16.   alexader va dir

    una molt bona explicació em va agradar molt