E }{Pr[s$|0n R Û| @rlatel.upf.edu/traductica/modular2000/nous/ExpressionsRegulars.pdf1.1.3. Una...

27
1 E}{Pr[ s$|0n $ R[ G Û|_@r $

Transcript of E }{Pr[s$|0n R Û| @rlatel.upf.edu/traductica/modular2000/nous/ExpressionsRegulars.pdf1.1.3. Una...

Page 1: E }{Pr[s$|0n R Û| @rlatel.upf.edu/traductica/modular2000/nous/ExpressionsRegulars.pdf1.1.3. Una altra de les utilitats de les regex és que ens permet trobar paraules o paràgrafs

1

E

}{Pr[s$|0n$ 

R

 

[GÛ|_@r$ 

Page 2: E }{Pr[s$|0n R Û| @rlatel.upf.edu/traductica/modular2000/nous/ExpressionsRegulars.pdf1.1.3. Una altra de les utilitats de les regex és que ens permet trobar paraules o paràgrafs

2

INTRODUCCIÓ  

El  treball  present  pretén  ser  una  petita  aproximació  a  les  expressions  regulars. Mitjançant  uns  quants  exemples  pràctics,  s’intentarà  fer  veure  al  lector  que  aquest llenguatge que a primer cop d’ull pot semblar poc simpàtic, pot arribar a ser‐ho molt ja que facilita la feina a tots aquells que fem servir l’ordinador.  

El treball està molt centrat en els editors de text perquè és l’eina que més gent utilitza, i la majoria d’exemples estan fets amb el MS Word. Això no vol dir que els exemples que estan  fets amb Word no es puguin  fer servir en altres aplicacions. Com es veurà més endavant, la cosa és més aviat a l’inrevés: tot el que es pot fer amb el Word es pot fer amb  un  altre  processador  de  textos  i,  per  norma  general,  de  manera  més  fàcil  i complerta. Al final del document hi trobareu una taula resum amb les equivalències (en algun  cas  els  resultats  són  aproximats)  entre  les  expressions  que  s’han  utilitzat  en Word i en Openoffice. Totes les imatges tenen un enllaç cap a la taula resum (cal ctrl?). 

Per  altra  banda,  també  hi  ha  alguns  exemples  d’altres  aplicacions  en  les  quals  les expressions ens poden ser de gran utilitat, com ara en el renombrament de fitxers, en la consulta de diccionaris o en la cerca de codis. 

Com podreu comprovar, no hi ha mai una fórmula única que serveixi per resoldre tots els problemes semblants i molts cops trobareu que l’expressió que escriviu no dóna el resultat  esperat.  Un  dels  avantatges  de  les  expressions  regulars  és  que  hi  ha  molts camins per arribar a un mateix punt i que segons quin camí agafes, pots descobrir un caminet que  et  dugui  a un punt  llunyà però no per  això menys  interessant.  En  certa manera és com un joc. Us animo doncs, a jugar a aquest joc que pot ajudar‐vos tant a uanyar temps agafant, això sí, camins i‐regulars. g

 

 

 

 

 

 

 

 

 

 

Joan Bonmatí Fernández 6‐12‐2007 

Page 3: E }{Pr[s$|0n R Û| @rlatel.upf.edu/traductica/modular2000/nous/ExpressionsRegulars.pdf1.1.3. Una altra de les utilitats de les regex és que ens permet trobar paraules o paràgrafs

1.  EDITORS DE TEXT  1.1. MICROSOFT WORD  En Word, les expressions regulars s’anomenen “carácteres comodín” en castellà o “Wildcards” en anglès. Seguint la tònica de Microsoft, han decidit no només canviar el nom, sinó també canviar els caràcters, de forma que resulta més complicat per la gent que coneix les expressions regulars “més estàndards” fer-les servir en Word. O al revés, la gent que està avesada al Word després té problemes per usar expressions regulars en altres aplicacions. L’avantatge més gran del Word és que molta gent ja està acostumada a la seva interfície però en l’ús de les expressions regulars no destaca en absolut. Un dels desavantatges més clars és que no hi ha l’opció d’utilitzar l’expressió 0 o més resultats {0,x}, ja que el 0, per Word no existeix. Això no vol dir, en absolut, que haguem de descartar el Word per fer aquest tipus de cerques. Com veureu, té moltes possibilitats. Però en podria tenir més.

3

uia

Si voleu saber el significat i la utilitat dels caràcters comodins en Word, al mateix quadre de cercar hi apareixen els símbols amb la seva funció simplificada (com es pot veure a la imatge). També teniu l’opció d’anar a l’ajuda de Word (prement F1). Però com que no està gaire ben explicat, millor que seguiu llegint i mirant els exemples o que consulteu aquesta petita g .

 

   

            

Page 4: E }{Pr[s$|0n R Û| @rlatel.upf.edu/traductica/modular2000/nous/ExpressionsRegulars.pdf1.1.3. Una altra de les utilitats de les regex és que ens permet trobar paraules o paràgrafs

1.1.1.  Una de les utilitats de les expressions regulars pot ser per ordenar adreces de correu electrònic.  Val  a  dir  que  hi  ha  molts  servidors  i  gestors  de  correus  que  faciliten  la importació i exportació d’adreces de correu electrònic. Tot i amb això, en alguns casos pot  ser  útil  utilitzar  les  regex  per  modificar  documents.  Aquí  se’n  mostren  alguns exemples fets a partir d’una llista de contactes de Gmail. 

ORDENACIÓ DE CORREUS ELECTRÒNICS 

1.1.1.1. Llista d’adreces de correu  El fet de que les adreces estiguin separades per < >, facilitarà el fet de separar la part de l’adreça del nom.  Així, podem seleccionar fàcilment tot el que hi ha des de que acaba na adreça (\>) fins que en comença una altra per mitjà de la fórmula “(\>)*(\<)” per al de reemplaçar‐ho.  ut 

                                                         Capt 1 Si reemplacem el nom del contacte per una marca de paràgraf (^13), ens quedaria una llista de mails “neta”:     

4

Page 5: E }{Pr[s$|0n R Û| @rlatel.upf.edu/traductica/modular2000/nous/ExpressionsRegulars.pdf1.1.3. Una altra de les utilitats de les regex és que ens permet trobar paraules o paràgrafs

5

Capt 

  

1.1.1.2. Nom i adreça  Si volguéssim mantenir el nom i l’adreça, podríem escriure l’expressió següent:  

  

t 3 

    

                  Cap Els parèntesis fan la funció de grup i això permet que a l’hora de reemplaçar puguem escollir l’ordre que més ens convingui o afegir‐hi caràcters. En aquest cas, el que farem és separar el nom de l’adreça per “:” i separar cada contacte per una marca de paràgraf (per mitjà de la substitució de la coma). La llista resultant és la següent:         

Page 6: E }{Pr[s$|0n R Û| @rlatel.upf.edu/traductica/modular2000/nous/ExpressionsRegulars.pdf1.1.3. Una altra de les utilitats de les regex és que ens permet trobar paraules o paràgrafs

                         Capt 4 

1.1.1.3. Punt cat 

na altra possibilitat que tenim és la de canviar una U

6

 part de l’adreça electrònica. Fins o fa gaire, n nent l’ús del domini .cat, i ue moltes  empreses  i  institucions  tenen el domini per duplicat o  triplicat,  pot  tenir na certa lògica canviar el nom. De moment, però, sí que funciona canviar el bcn.es pel cn.cat però no el hotmail.com pel hotmail.cat. a  fórmula que utilitzarem al quadre  reemplaçar és aquesta:  “<(*\@)(*.)(*)>”. El  fet 

els “perillosos” caràcters * (per la quantitat de resultats que poden donar) fa que haguem de marcar les marques d’inici i fi de paraula (<>). Els parèntesis serviran altre cop  per  poder crear grups diferents. El resultat de la cerca i reemplaçament és el següent:                             Capt 5                  

n o era una cosa gaire útil, però ara que s’està estequbLd’utilitzar 

Page 7: E }{Pr[s$|0n R Û| @rlatel.upf.edu/traductica/modular2000/nous/ExpressionsRegulars.pdf1.1.3. Una altra de les utilitats de les regex és que ens permet trobar paraules o paràgrafs

7

1.1.2. DATES  Una  de  les  característiques  més  interessants  de  les  regex  és  que  ens  donen  la possibilitat de canviar el format de les dates de manera ràpida i senzilla i ens evita la feina  feixuga  d’anar  canviant  un  per  un  totes  les  dates.  A  continuació  es  plantegen alguns exemples de com fer servir el canvi de dates.  

1.1.2.1. Canvi de format de dates senzill   

                                        Capt 6

  Com  que  hem  utilitzat  els  parèntesis  per  marcar  grups,  ara,  al  quadre  reemplaçar podrem  decidir  l’ordre  de  dies, mesos  i  anys  que  ens  convingui més.  En  aquest  cas s’inverteix completament segons \3/\2/\1, com es mostra a continuació: 

Page 8: E }{Pr[s$|0n R Û| @rlatel.upf.edu/traductica/modular2000/nous/ExpressionsRegulars.pdf1.1.3. Una altra de les utilitats de les regex és que ens permet trobar paraules o paràgrafs

    Capt 7 

 i volguéssim que ens quedessin en format MM/DD/AAAA tan sols hauríem de canviar a fórmula del quadre reemplaçar per la següent: \2/\1/\3 Sl                      

8

Page 9: E }{Pr[s$|0n R Û| @rlatel.upf.edu/traductica/modular2000/nous/ExpressionsRegulars.pdf1.1.3. Una altra de les utilitats de les regex és que ens permet trobar paraules o paràgrafs

1.1.2.2. Canvi de format de data complex Existeixen múltiples opcions d’escriure les dates. Possiblement, el format més estès en català  és  el  2  d’octubre  del  2007.  Aquest  canvi,  òbviament,  no  es  pot  fer  de manera directa però sí que es pot crear una fórmula que tan sols canviant el nombre de mes, permeti canviar automàticament totes les dates. El primer cop haurem de fer l’operació 2  vegades  (pels  12  mesos)  però  si  gravem  unes  macros,  ja  tindrem  sempre  un traductor automàtic” de dates. 1“ 

                                                                                                                                                                                                                    Capt 8 

1.1.2.3. Canvi de format de data i d’hora Si a més de canviar la data, volem canviar l’hora, haurem d’afegir la fórmula marcada a ontinuació. Al quadre reemplaçar, podríem afegir una coma entre la data i l’hora, que niria separada per un punt i seguida d’una h, com es pot veure: 

9

ca 

  Capt 9 

Page 10: E }{Pr[s$|0n R Û| @rlatel.upf.edu/traductica/modular2000/nous/ExpressionsRegulars.pdf1.1.3. Una altra de les utilitats de les regex és que ens permet trobar paraules o paràgrafs

Dl 

’aquesta manera, després de fer els canvis de dates i hores, ens quedaria un text amb es dates i hores “en català”:  

  Capt. 10 

                        

10

Page 11: E }{Pr[s$|0n R Û| @rlatel.upf.edu/traductica/modular2000/nous/ExpressionsRegulars.pdf1.1.3. Una altra de les utilitats de les regex és que ens permet trobar paraules o paràgrafs

1.1.3.  Una altra de  les utilitats de  les regex és que ens permet  trobar paraules o   paràgrafs consecutius repetits.  

REPETICIONS 

 

1.1.3.1.  Repetició de paraules Per  detectar  paraules  repetides  utilitzarem  l’expressió  <(*)>  <\1>,  que  identifica qualsevol  seqüència  de  caràcters  que  no  estigui  al  mig  d’una  paraula  “<(*)>”  i  que estigui  repetida  “<\1>”  després  d’un  espai.  Si  volem  suprimir  la  paraula  repetida simplement haurem d’escriure “\1” al quadre reemplaçar. S’ha d’anar amb compte amb aquest  reemplaçament  perquè  hi  ha  paraules  i  expressions  de  la  nostra  llengua  que nclouen la repetició de paraules, com ara pica pica, o simplement en un diàleg, hi ha araules que es poden repetir, com ara prou prou. ip    

 Capt 11 

       

11

Page 12: E }{Pr[s$|0n R Û| @rlatel.upf.edu/traductica/modular2000/nous/ExpressionsRegulars.pdf1.1.3. Una altra de les utilitats de les regex és que ens permet trobar paraules o paràgrafs

12

1.1.3.2. Paràgrafs duplicats  El  mateix  que  es  pot  fer  amb  les  paraules,  es  pot  fer  amb  els  paràgrafs  duplicats. ’expressió que farem servir en aquest cas és “(*^13*)@\12” al quadre cercar i \1 al uadre reemplaçar.  Lq    

Capt 12  E l resultat del reemplaçament és el següent: 

                                                                                                                                                                                       Capt 13   

Page 13: E }{Pr[s$|0n R Û| @rlatel.upf.edu/traductica/modular2000/nous/ExpressionsRegulars.pdf1.1.3. Una altra de les utilitats de les regex és que ens permet trobar paraules o paràgrafs

1.1.4.  Les  fórmules que  representen  els  compostos químics  sovint  són un maldecap  ja  que una  mateixa  paraula  conté  diferents  formats  (lletres  majúscules  i  minúscules  i números en subíndex). El fet que només una part de la unitat tingui un format diferent complica molt  les coses a  l’hora d’intentar  treballar de  forma ràpida  i automatitzada. Segurament el fet d’haver de canviar el format molt sovint quan s’escriu un text que té fórmules químiques, ha fet que sovint ens arribin a les mans textos que no utilitzen el ubíndex (potser per mandra). El que es proposa en el següent exemple és una manera e substituir fórmules de l’estil CO2 per la formulació correcta CO

SUBÍNDEXS I SUPERÍNDEX 

sd 

2. 

1.1.4.1. Subíndex: compostos químics  Les  limitacions de Microsoft Word en  l’ús d’expressions regulars  fan que  l’exemple el reemplaçament de fórmules s’hagi de fer en diferents parts i que no sigui del tot precís. En primer lloc, cercarem “([A­Za­z])([0­9]@)([!0­9])”, és a dir una lletra seguida d’un ombre que no vagi seguit d’un altre nombre. Això ens donarà un resultat com el que s mostra a continuació: ne 

13

 Capt 14 

Pel problema de format que s’ha comentat abans, utilitzarem un caràcter poc usat (#) i el  posarem  entre  la  lletra  i  el  nombre  al  quadre  reemplaçar  \1#\2\3.  Haurem  de repetir com a mínim un cop per tal de que també faci el reemplaçament al costat del segon  nombre  en  compostos  com  l’H2SO4.  Un  cop  tenim  tots  els  números  de  les fórmules  precedits  per  un  #  ja  podem  cercar  (#)(0­9).  Al  quadre  reemplaçar  hi posarem només \2  ja que el símbol #  ja no el necessitem. Per posar  l’opció subíndex haurem d’anar a la pestanya Formato Fuente i marcar la casella corresponent. 

Page 14: E }{Pr[s$|0n R Û| @rlatel.upf.edu/traductica/modular2000/nous/ExpressionsRegulars.pdf1.1.3. Una altra de les utilitats de les regex és que ens permet trobar paraules o paràgrafs

 Capt 15 

’aquesta manera, una bona part dels compostos químics més típics els tindrem amb la ormulació que els correspon: Df 

                                                                                                                                                                                                  Capt 16 

 

14

Page 15: E }{Pr[s$|0n R Û| @rlatel.upf.edu/traductica/modular2000/nous/ExpressionsRegulars.pdf1.1.3. Una altra de les utilitats de les regex és que ens permet trobar paraules o paràgrafs

1.1.4.2. Superíndex: superfícies i vo Utilitzant  el mateix procés que en 

lums 

l’exemple  anterior podem modificar  les unitats de superfície  i  de volum. El que  canvia és que en el primer quadre de  cercar hi  apareix (m)([23])>  i  que  a  l’hora  de  reemplaçar  el  caràcter  #,  hem  de  canviar  el  format  a superíndex, com mostren les següents imatges:  

15

             Capt 17 

                                                     

Capt 18 

Page 16: E }{Pr[s$|0n R Û| @rlatel.upf.edu/traductica/modular2000/nous/ExpressionsRegulars.pdf1.1.3. Una altra de les utilitats de les regex és que ens permet trobar paraules o paràgrafs

1.1.5. XATS i XATES Les expressions regulars també ens poden servir per netejar les converses desades que hem tingut en xats. D’aquesta manera ens estalviarem de llegir coses com ara “[QKrota] :D Nit  loca a Pachà! Rska mxma,  i ara studiaaaa!  :P dice:”  i potser així serem capaços d’entendre una mica de què anava la conversa tinguda.   

1.1.5.1. Conversa Messenger En aquesta conversa del Messenger  s’eliminarà l’hora, i es reemplaçaran els àlies dels participants per uns noms més  comprensibles. Això  es pot  fer mitjançant  l’expressió egular  (\[[0­9]{2}:[0­9]{2}:[0­9]{2}\])  (àlies:)  pel  nom  que  vulguem  reemplaçar, om mostra la imatge:   rc 

 

16

                     ixí, ens pot una conversa on hi participen Jo i Ella en comptes de badant i fai lo que p, om mostra la imatge:  

       Capt 19 Ac            

 Capt 20 

Page 17: E }{Pr[s$|0n R Û| @rlatel.upf.edu/traductica/modular2000/nous/ExpressionsRegulars.pdf1.1.3. Una altra de les utilitats de les regex és que ens permet trobar paraules o paràgrafs

1.1.5.2. Conversa xat  Una altra opció que tenim és la d’eliminar tots els noms dels participants d’un xat per tenir simplement el “contingut” de les converses. En aquest cas, per mitjà de la fórmula “([0­9]{2}:[0­9]{2})*:”  reemplaçaríem  els  àlies  dels  participants  i  l’hora  per  l’àlies genèric poca feina diu:   

17

                   

Capt 21                        

Page 18: E }{Pr[s$|0n R Û| @rlatel.upf.edu/traductica/modular2000/nous/ExpressionsRegulars.pdf1.1.3. Una altra de les utilitats de les regex és que ens permet trobar paraules o paràgrafs

1.2. OPENOFFICE WRITER  L’Openoffice és un paquet de programari d’oficina similar a  l’Office de Windows, tot  i que  en  certs  aspectes  és  millor.  Es  tracta  de  programari  lliure  i  gratuït  i  a  més  és compatible  tant  en  Windows  com  en  Linux  com  en  Mac.  L’equivalent  del  Word  de Microsoft  és  l’Openoffice Writer.  En  la  versió  catalana  del Writer  s'utilitza  el  terme “expressions  regulars”.  Les  versions   més  noves  que  la  1.0  incorporen  la  possibilitat d'usar  expressions  regulars.  En  aquest  sentit,  Openoffice  Writer  és  molt  millor  que Microsoft Word, ja que té un ventall de possibilitats (i de metacaràcters) més elevat i a més  la  sintaxis que utilitza és més estàndard  i per  tant  les  “fórmules” utilitzades ens poden servir en altres programes d'expressions regulars. Els  caràcters  que  es  poden  fer  servir  estan  disponibles  a  l’ajuda  (F1)  d’Openoffice  i també  apareixen  recollides  a  l’entrada  regular  expressions  de  wikipedia.  Una  guia interessant per aprendre a fer anar les regex és aquesta. 

1.2.1. IPS I CODIS DE COLOR  Les  expressions  també  serveixen per  cercar  en  fitxers  que  no  estan  en  format  doc. Així, podrem cercar dins de pàgines escrites en html o en algun altre  llenguatge de programació.  

18

1.2.1.1. Detecció d’IPs L’expressió  per  reconèixer  adreces  Ip  (v4)  és  la  següent:  (([0­1]?[0­9]{1,2}\.)|(2[0­4][0­9]\.)|(25[0­5]\.)){3}(([0­1]?[0­9]{1,2})|(2[0­4][0­9])|(25[0­5])).  Si volguéssim reconèixer l’adreça física (MAC Adress) l’expressió seria semblant però hi auria  “:”  en  comptes  de  “.”  i  a  més  hi  hauria  lletres.  No  cal  dir  que  aquestes xpressions s’haurien de canviar si volguéssim fer la mateixa cerca en Word. he                     

    

Capt 22 

Page 19: E }{Pr[s$|0n R Û| @rlatel.upf.edu/traductica/modular2000/nous/ExpressionsRegulars.pdf1.1.3. Una altra de les utilitats de les regex és que ens permet trobar paraules o paràgrafs

1.2.1.2. Codi colors RGB En llenguatge html, es representen els colors mitjançant tres parells d’hexadecimals que representen,  per  ordre,  “la  quantitat”  de  vermell,  verd  i  blau  precedits  pel  caràcter  #. Així, si veiem una pàgina web que té uns colors que volem fer servir, podem visualitzar el codi font i localitzar els colors. Per fer‐ho, podem utilitzar l’expressió #([a­f]|[A­F]|[0­]{3}([a­f]|[A­F]|[0­9]{3}.  Hi  ha  l’opció  de  fer  la mateix  cerca  per  internet  explicada és endavant.

19

9m      

                         Capt 23               

Page 20: E }{Pr[s$|0n R Û| @rlatel.upf.edu/traductica/modular2000/nous/ExpressionsRegulars.pdf1.1.3. Una altra de les utilitats de les regex és que ens permet trobar paraules o paràgrafs

1.2.2.  Com ja s’ha avançat, una de les utilitats més importants  és la que fa referència a dades e  contacte.  En  aquest  apartat  s’introdueix  el  reconeixement  del  codi  postal  i  es erfecciona la cerca (i reemplaçament) d’adreces de correu electrònic. 

ADRECES (CORREU I CODI POSTAL) 

dp 

1.2.2.1. Codi postal   La localització del codi postal de l’Estat Espanyol es pot fer mitjançant l’expressió “\<([1­]{2}|[0­9]|[1­9]|[1­9][0­9])[0­9]{3}\>”. De forma similar es podrien crear regex per econèixer números de telèfon o codis postals d’altres països. 9r                           

 Capt 24 

           

20

Page 21: E }{Pr[s$|0n R Û| @rlatel.upf.edu/traductica/modular2000/nous/ExpressionsRegulars.pdf1.1.3. Una altra de les utilitats de les regex és que ens permet trobar paraules o paràgrafs

21

1.2.2.2. Correus electrònics OO  El reconeixement d’adreces de correu electrònic és molt millor al Writer que no pas al Word.  L’openoffice,  gràcies  a  l’opció de  cercar 0  ocurrències  o més  ({0,x})  permet  el reconeixement  de  les  adreces  que  després  d’@  tenen  dos  punts,  com  ara @correu.udg.es. A més, també reconeix la part esquerra de l’@ que està separada per guionets  o  punts.  L’expressió  que  s’ha  fet  servir  és  la  següent  “\<[:alnum:]*([\.|_|­|]{0,1})[:alnum:]*([\.|_|­|]{0,1})[:alnum:]*@([:alnum:]*[­|_|\.]{0,3}[:alnum:]*[­|_|\.]{0,2}[:alnum:]{2,3})\>”. Les propostes de reemplaçament estan recollides a l’apartat 1.1.1.1 d’aquest document. 

 

Capt 25              

Page 22: E }{Pr[s$|0n R Û| @rlatel.upf.edu/traductica/modular2000/nous/ExpressionsRegulars.pdf1.1.3. Una altra de les utilitats de les regex és que ens permet trobar paraules o paràgrafs

22

1.2.3. XIFRES ROMANES Els nombres romans acostumen a portar maldecaps. A part de ser una mica difícils de llegir,  en  català,  quan  s’usen  per  parlar  de  segles,  han  d’anar  en  versaletes.  Les expressions regulars poden ajudar a detectar i canviar el format dels números romans. En  Word  és  molt  més  difícil  fer  una  cerca  precisa  ja  que  l’expressió  conté  el metacaràcter {0,} que el Word no suporta. 

1.2.3.1. Les versaletes i els romans  Per cercar les xifres romanes escriurem l’expressió “\<(I{0,3}X{0,3})\>|({X{0,3} I[0,3}V{0,3}I{0,3})\>” al quadre cercar i & al quadre reemplaçar (significa el que ja hi ha al quadre cercar més el que hi afegim) amb l’opció versaletes marcada (a la pestanya Format...).

Capt 26

Page 23: E }{Pr[s$|0n R Û| @rlatel.upf.edu/traductica/modular2000/nous/ExpressionsRegulars.pdf1.1.3. Una altra de les utilitats de les regex és que ens permet trobar paraules o paràgrafs

23

1.3. ALTRES EDITORS DE TEXT  Hi  ha  molts  altres  editors  de  text  que  admeten  l’ús  d’expressions  regulars.  Els  que tenen més suport pel que fa expressions regulars són els editors de text de llenguatges e programació i és que els regex, com ja s’ha apuntat, no només tenen aplicacions ens dfitxers .doc sinó que també en tenen en moltes altres coses.  Entre els programes o llenguatges que suporten regex, hi destaquen:  jEdit: Un editor de text gratuït que suporta més de 130 tipus de llenguatge. Per Windows, Linux i Mac. Powergrep: Segurament és el programa més complert d’expressions regulars. Inclou 

 totes les eines necessàries per editar textos però també serveix per canviar noms defitxers, entre altres coses. Només en Windows i pagant uns 100 euros. Perl: Les possibilitats de les expressions regulars són gairebé infinites. Pot resultar difícil d’entrada, degut precisament a les seves enormes possibilitats. avaJ , JavaScript, JScript, VBScript, C#, PHP, MySQL i SQL Server 2000 també suporten xpressions regulars. e                                

Page 24: E }{Pr[s$|0n R Û| @rlatel.upf.edu/traductica/modular2000/nous/ExpressionsRegulars.pdf1.1.3. Una altra de les utilitats de les regex és que ens permet trobar paraules o paràgrafs

2.  ALTRES APLICACIONS 

 Els regexs també ens poden servir per fer cerques a diccionaris, a catàlegs, per cercar fitxers,  etc. De fet, encara que no en siguem gaire conscients, segur que algun cop hem fet servir algun metacaràcter de les expressions regulars. Quan no estem segurs de com s’escriu “el nom de l’autora aquella txeca que té un nom tan llarg i no me’n recordo mai si  és  Ardizêdrdova  o  amb Ardizönerrzdriva”  llavors  posem Ardiz*  al  catàleg  on‐line, que és la part que estem segurs que apareixerà. Doncs bé, el * és un metacaràcter. 

 2.1. DICCIONARIS 

 Gairebé  tots  els  diccionaris  electrònics  ja  incorporen  un mínim  suport  d’expressions regulars  que  faciliten  molt  la  cerca  de  paraules  que  no  estem  gaire  segurs  de  com ’escriuen,  o  simplement  per  cercar  sufixos,  afixos,  etc.  Tot  i  amb  això,  el  suport  en egex que ofereixen alguns d’aquests diccionaris, deixa bastant a desitjar.  sr 

2.1.1.1. DACCO 

24

 El Dacco és un diccionari en  línia català‐anglès  i  anglès‐català que permet  fer  cerques utilitzant  les  expressions  regulars  de  Perl.  Això  ens  permet,  entre moltes  altres  coses, cercar paraules pel seu acabament, com en un diccionari de la rima. Així, si volem fer un poema d'un  ruc  que  cerca  refugi  perquè  plou,  podem  cercar  al  diccionari,  l'expressió“uc$” i ens donarà entrades que acaben en “uc”, com ara aixopluc.  

 

Capt 26      

       

    

Page 25: E }{Pr[s$|0n R Û| @rlatel.upf.edu/traductica/modular2000/nous/ExpressionsRegulars.pdf1.1.3. Una altra de les utilitats de les regex és que ens permet trobar paraules o paràgrafs

2.2. MOURE FITXES  

Cada cop hi ha més programes que tenen l’opció d’usar expressions regulars per cercar fitxers.  Aquesta  eina  és  cada  cop  més  important  perquè  cada  cop  acumulem  més informació i més fitxers que de vegades no sabem ni on són ni quina cara tenen. El fet de poder acotar la cerca de fitxers ens estalviarà feina de remenar carpetes. Per altra banda, la possibilitat de cercar i canviar el nom a fitxers amb nom avorrit de cop també és una opció molt interessant. Entre aquests programes, en destacarem dos perquè la interfície és “amigable” i són fàcils d’usar. 

2.2.1. FLEXIBLE RENAMER  Programa lliure i gratuït que permet fer canvis a noms de fitxers o carpetes per mitjà d’expressions  regulars.  A més,  incorpora  l’opció  de  traduir  al  xinès  simplificat,  entre ltres.  En  aquest  exemple  es  mostra  com  es  pot  canviar  els  noms  de  fitxers  .jpg itjançant l’expressió “\<([\d]{4})([\d]{2})([\d]{2}):” 

am  

                      

25

Page 26: E }{Pr[s$|0n R Û| @rlatel.upf.edu/traductica/modular2000/nous/ExpressionsRegulars.pdf1.1.3. Una altra de les utilitats de les regex és que ens permet trobar paraules o paràgrafs

2.3. GOOGLE CODE  Una de  les múltiples opcions de cerca que ens ofereix Google és  la de cercar codi. La cerca es pot restringir per llenguatge (per cercar xml, per exemple, posarem l’expressió lang:lisp  xml)  i  es  poden  utilitzar  expressions  regulars.  Google  code  suporta  algunes expressions regulars de Perl però està basat en la sintaxi POSIX, molt similar al que es fa  servir  en  openoffice.  Per  donar  fe  que  la  cerca  és  eficient,  prendrem  un  exemple anterior, el dels colors RGB:  \”#([a­f]|[A­F]|[0­9]{3}([a­f]|[A­F]|[0­9]{3}\”  

             

26

Page 27: E }{Pr[s$|0n R Û| @rlatel.upf.edu/traductica/modular2000/nous/ExpressionsRegulars.pdf1.1.3. Una altra de les utilitats de les regex és que ens permet trobar paraules o paràgrafs

27

APÈNDIX  

Taula comparativa d’expressions OOWriter i Word  

  Captures  MS Word  Openoffice Writer 

Mails  

Llista (1 i 2)  (\>)*(\<)  (>.[^@]+<) Nom (3 i 4)  . (*) (\<)(*)(\>)  , (.[^@]+)(<.+>) Cat 5 <(*\@)(*)(*.)>  (.*[^@])([.*\.]{1})([.*\.]{0,1}) 

Dates

Senzill (6 i 7)  ([0‐9]{1;2})/([0‐9]{1;2})/([0‐9]{2;4}) 

([0‐9]{1,2})/([0‐9]{1,2})/ ([0‐9]{2,4}) Complex (8) 

+hora (9 i 10)  ([0‐9]{1;2}){2;4})([0‐9]

‐([0‐9]{1;2})‐([0‐9] {2}):([0‐9]{2}) 

([0‐9]{1,2})‐([0{2,4})([0‐9]{2})

‐9]{1,2})‐([0‐9] :([0‐9]{2}) 

Repeticions Paraules (11)  <(*)> <\1>  \<([^ ]+)[ ]+\1 Paràgrafs (12 i 13)  (*^13)@\1  ? 

Subíndex i superíndex

Subíndex (14, 15, 16)  ([A‐Za‐z])([0‐9]@)([!0‐9]) 

\<([A-Za-z]{1,4})([0-9]{1,2})([A-Za-z]{0,4})([0-9]{0,2})([A-Za-z]{0,4})([0-9]{0,2}) 

Superíndex (17 i 18)  ([A‐Za‐z])([0‐9]@)([!0‐9]) 

\<([A-Za-z]{1,4})([0-9]{1,2})([A-Za-z]{0,4})([0-9]{0,2})([A-Za-z]{0,4})([0-9]{0,2}) 

Xats

Msn (19 i 20)  (\[[0‐9]{2}:[0‐9]{2}:[(àlies:) 

0‐9]{2}\])  (\[[0‐9]{2}:[0‐9]{2}:[0‐9]{2}\]) (àlies:) 

Xat (21)  ([0‐9]{2}:[0‐9]{2})*:  ([0‐9]{2}:[0‐9]{2}) .*: 

Ips i colors

Ips (22)  ([0‐9]{2;3}).([0‐9]{2;3}).([0‐9]{2;3}).([0‐9]{2;3}) 

(([0‐1]?[0‐9]{1,2}\.)|(2[0‐4][0‐

) 9]\.)|(25[0‐5]\.)){3}(([0‐1]?[0‐9]{1,2})|(2[0‐4][0‐9])|(25[0‐5])

RGB (23)  #([a‐fA‐F0‐9]){3}([a‐fA‐F0‐9]){3}  #([a‐f]|[A‐F]|[0‐9]){3}([a‐f]|[A‐F]|[0‐9]){3} 

Correus

Codi postal (24)  INVIABLE  \<([1‐9]{2}|[0‐9]|[1‐9]|[1‐9][0‐

9])[0‐9]{3}\> 

Mails (25)  <(*\@)(*)(*.)> 

“\<[:alnum:]*([\.|_|‐|]{0,1})[:alnum:] *([\.|_|‐|]{0,1})[:alnum:]*@ ([:alnum:]*[‐|_|\.]{0,3}[:alnum:]*[‐|_|\.]{0,2}[:alnum:]{2,3})\> 

Xifres romanes

XXVI (26)  INVIABLE  \<(I{0,3}X{0,3})\>|({X{0,3}I[0,3}V{0,3}I{0,3})\> 

  

Bonmatí
Sticky Note
En aquest cas, l'openoffice permet reconèixer totes les parts de la fórmula química. Per reemplaçar els nombres de cop, podem seleccionar-ho tot i llavors al quadre cercar posar-hi [0-9] i a reemplaçar (la selecció) & amb format subíndex.
Bonmatí
Sticky Note
Com en el cas anterior, l'expressió regular de l'openoffice és molt més exacta i ens estalvia algun pas
Bonmatí
Sticky Note
La limitació de les funcions de Word fan que només puguem trobar cinc nombres seguits que podrien ser o no d'un codi postal. L'expressió seria <[0-9]{5}>
Bonmatí
Sticky Note
Expressió regular molt més limitada que la de l'Openoffice. Pot tenir alguns resultats inesperats. Sense anar més lluny, podria reconèixer números de telèfon en comptes d'IP.
Bonmatí
Sticky Note
El fet que Word no tingui l'opció de cercar 0 o més resultats ({0,}) fa que el reconeixement de les xifres romanes sigui molt limitat.
Bonmatí
Sticky Note
Es pot fer servir la mateixa expressió que apareix al quadre del Word. Això prova no només la compatibilitat total d'algunes expressions sinó que també hi ha diferents maneres de cercar una mateixa cosa
Bonmatí
Sticky Note
No he trobat cap manera de reconèixe'ls tot i que probablement n'hi deu haver alguna
Bonmatí
Sticky Note
La regex de Word no permet reconèixer les adreces de correu electrònics de l'estil [email protected]. La de l'openoffice, en canvi, sí.
Bonmatí
Sticky Note
val a dir que hi ha expressions que són idèntiques i n'hi ha d'altres que varien una mica, però consultant la funció dels caràcters especials en els diferents editors de text, es pot treballar amb les expressions regulars de forma bastant similar.