{"id":733,"date":"2023-10-18T13:27:39","date_gmt":"2023-10-18T11:27:39","guid":{"rendered":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/?page_id=733"},"modified":"2023-10-18T13:29:29","modified_gmt":"2023-10-18T11:29:29","slug":"1-13-4-expressions-regulars-en-angles-regexps","status":"publish","type":"page","link":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/1-13-4-expressions-regulars-en-angles-regexps\/","title":{"rendered":"1.13.4. Expressions regulars (en angl\u00e8s, regexps)"},"content":{"rendered":"<p>At\u00e8s que <code>gawk<\/code> \u00e9s un llenguatge especialitzat en el processament d\u2019arxius de text basat en patrons, \u00e9s essencial tornar a presentar una secci\u00f3 sobre expressions regulars. Una nova presentaci\u00f3 sempre ajuda a fixar els temes a estudiar.<\/p>\n<p>Una expressi\u00f3 regular (<em>regex<\/em> o <em>regexp<\/em>) defineix un o diversos conjunts de cadenes de car\u00e0cters utilitzant una notaci\u00f3 espec\u00edfica:<\/p>\n<ul>\n<li>Una cadena literal de car\u00e0cters \u00e9s una <em>regex<\/em> que defineix una sola cadena: a si mateixa.<\/li>\n<li>Una expressi\u00f3 regular m\u00e9s complexa:\n<ul>\n<li>Car\u00e0cters ordinaris utilitzats en <em>regexe<\/em>: _, <code>A-Z, a-z, 0-9<\/code><\/li>\n<li>Metacar\u00e0cters utilitzats en <em>regexe<\/em>: <code>.*[ ]^${ }+?|( )<\/code><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Les <em>regexes<\/em> s\u2019utilitzen per trobar patrons espec\u00edfics en arxius de text. Programes com <em>ed, vim, grep, sed, awk, perl<\/em>, entre molts altres, fan \u00fas de <em>regexes<\/em> per buscar aquests patrons en arxius de text.<\/p>\n<p>Hi ha dos motors de recerca de patrons mitjan\u00e7ant expressions regulars i cal tenir-ho molt en compte en funci\u00f3 de l\u2019ordre que es vol utilitzar<\/p>\n<ul>\n<li>El motor b\u00e0sic d\u2019expressions regulars (BRE), usat per exemple per <em>sed<\/em> i <em>grep<\/em>.<\/li>\n<li>El motor est\u00e8s d\u2019expressions regulars (ERE), usat per exemple per <code>gawk<\/code> i <em>perl<\/em>.<\/li>\n<\/ul>\n<p>S\u2019afegeixen dues taules amb la notaci\u00f3 de car\u00e0cters BRE\/ERE usats m\u00e9s freq\u00fcentment amb <code>gawk<\/code> (taules 14 i 15).<\/p>\n<div class=\"tabletitle\"><p>Taula 14. Notaci\u00f3 de car\u00e0cters especials. Motor BRE\/ERE.<\/p>\n<\/div>\n<table width=\"602\">\n<tbody>\n<tr class=\"table-header\">\n<td width=\"132\"><strong>Notaci\u00f3<\/strong><\/td>\n<td width=\"470\"><strong>Significat<\/strong><\/td>\n<\/tr>\n<tr>\n<td width=\"132\"><code>\\<\/code><\/td>\n<td width=\"470\">Escapa el significat del metacar\u00e0cter, interpretaci\u00f3 literal<\/td>\n<\/tr>\n<tr>\n<td width=\"132\"><code>.<\/code><\/td>\n<td width=\"470\">Qualsevol car\u00e0cter senzill excepte NULL<\/td>\n<\/tr>\n<tr>\n<td width=\"132\"><code>*<\/code><\/td>\n<td width=\"470\">Qualsevol quantitat de vegades (o zero) el car\u00e0cter precedent<\/td>\n<\/tr>\n<tr>\n<td width=\"132\"><code>^<\/code><\/td>\n<td width=\"470\">La <em>regexp<\/em> coincideix a l\u2019inici de la l\u00ednia o cadena de car\u00e0cters<\/td>\n<\/tr>\n<tr>\n<td width=\"132\"><code>$<\/code><\/td>\n<td width=\"470\">La <em>regexp<\/em> coincideix al final de la l\u00ednia o cadena de car\u00e0cters<\/td>\n<\/tr>\n<tr>\n<td width=\"132\"><code>[123][A-Z]<\/code><\/td>\n<td width=\"470\">Qualsevol dels car\u00e0cters inclosos o rang indicat coincideixen<\/td>\n<\/tr>\n<tr>\n<td width=\"132\"><code>[[:alnum:]]<\/code><\/td>\n<td width=\"470\">Alfanum\u00e8rics [a-zA-Z0-9_]<\/td>\n<\/tr>\n<tr>\n<td width=\"132\"><code>[[:alpha:]]<\/code><\/td>\n<td width=\"470\">Caracters alfab\u00e8tics [a-zA-Z]<\/td>\n<\/tr>\n<tr>\n<td width=\"132\"><code>[[:space:]]<\/code><\/td>\n<td width=\"470\">Espais (<code>' '<\/code>, tabuladors, salt de l\u00ednia)<\/td>\n<\/tr>\n<tr>\n<td width=\"132\"><code>[[:blank:]]<\/code><\/td>\n<td width=\"470\">Coincideixen espais i tabuladors<\/td>\n<\/tr>\n<tr>\n<td width=\"132\"><code>[[:upper:]]<\/code><\/td>\n<td width=\"470\">Coincideix [A-Z]<\/td>\n<\/tr>\n<tr>\n<td width=\"132\"><code>[[:lower:]]<\/code><\/td>\n<td width=\"470\">Coincideix [a-z]<\/td>\n<\/tr>\n<tr>\n<td width=\"132\"><code>[[:digit:]]<\/code><\/td>\n<td width=\"470\">Coincideix [0-9]<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div class=\"tablefooter\"><p>Font: elaboraci\u00f3 pr\u00f2pia.<\/p>\n<\/div>\n<p>I una altra taula en particular, amb la notaci\u00f3 de car\u00e0cters ERE usats m\u00e9s freq\u00fcentment:<\/p>\n<div class=\"tabletitle\"><p>Taula 15. Classe de car\u00e0cters ERE m\u00e9s freq\u00fcentment usats.<\/p>\n<\/div>\n<table width=\"602\">\n<tbody>\n<tr class=\"table-header\">\n<td width=\"113\"><strong>Notaci\u00f3<\/strong><\/td>\n<td width=\"489\"><strong>Significat<\/strong><\/td>\n<\/tr>\n<tr>\n<td width=\"113\"><code>\\w<\/code><\/td>\n<td width=\"489\">Car\u00e0cters alfanum\u00e8rics [a-zA-Z0-9_]<\/td>\n<\/tr>\n<tr>\n<td width=\"113\"><code>\\W<\/code><\/td>\n<td width=\"489\">Car\u00e0cters no alfanum\u00e8rics [^[:alnum:]_]<\/td>\n<\/tr>\n<tr>\n<td width=\"113\"><code>\\s<\/code><\/td>\n<td width=\"489\">Coincideix amb espais i tabuladors<\/td>\n<\/tr>\n<tr>\n<td width=\"113\"><code>\\d<\/code><\/td>\n<td width=\"489\">Coincideix [0-9]<\/td>\n<\/tr>\n<tr>\n<td width=\"113\"><code>\\&lt;<\/code><\/td>\n<td width=\"489\">Coincideix amb l\u2019inici d\u2019una paraula<\/td>\n<\/tr>\n<tr>\n<td width=\"113\"><code>\\&gt;<\/code><\/td>\n<td width=\"489\">Coincideix amb el final d\u2019una paraula<\/td>\n<\/tr>\n<tr>\n<td width=\"113\"><code>{n,m}<\/code><\/td>\n<td width=\"489\">Expressi\u00f3 d\u2019interval: coincideixen inst\u00e0ncies, o de <em>n<\/em> a <em>m<\/em> inst\u00e0ncies<\/td>\n<\/tr>\n<tr>\n<td width=\"113\"><code>+<\/code><\/td>\n<td width=\"489\">Coincideixen una o m\u00e9s inst\u00e0ncies de la <em>regexp<\/em> precedent<\/td>\n<\/tr>\n<tr>\n<td width=\"113\"><code>\u00bf<\/code><\/td>\n<td width=\"489\">Coincideixen zero o una inst\u00e0ncia de la <em>regexp <\/em>precedent<\/td>\n<\/tr>\n<tr>\n<td width=\"113\"><code>|<\/code><\/td>\n<td width=\"489\">Coincideix la<em> regexp<\/em> especificada abans o despr\u00e9s de | (aix\u00f2|all\u00f2)<\/td>\n<\/tr>\n<tr>\n<td width=\"113\"><code>( )<\/code><\/td>\n<td width=\"489\">Busca un <em>match<\/em> al grup de <em>regexes<\/em> incloses: (aix\u00f2|all\u00f2)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div class=\"tablefooter\"><p>Font: elaboraci\u00f3 pr\u00f2pia.<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>At\u00e8s que gawk \u00e9s un llenguatge especialitzat en el processament d\u2019arxius de text basat en patrons, \u00e9s essencial tornar a presentar una secci\u00f3 sobre expressions regulars. Una nova presentaci\u00f3 sempre ajuda a fixar els temes a estudiar. Una expressi\u00f3 regular (regex o regexp) defineix un o diversos conjunts de cadenes de car\u00e0cters utilitzant una notaci\u00f3 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"acf":[],"_links":{"self":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/wp-json\/wp\/v2\/pages\/733"}],"collection":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/wp-json\/wp\/v2\/comments?post=733"}],"version-history":[{"count":4,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/wp-json\/wp\/v2\/pages\/733\/revisions"}],"predecessor-version":[{"id":736,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/wp-json\/wp\/v2\/pages\/733\/revisions\/736"}],"wp:attachment":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/wp-json\/wp\/v2\/media?parent=733"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}