« Matematikspalter | Main | GeoURL »

augusti 10, 2003

Reguljära uttryck

Sedan många år har jag varit fascinerad av reguljära uttryck (regular expressions, regex, regexp, nedan förkortat "RE"). Det är ett kärnfullt sätt att söka i texter med ett fåtal operatorer och "funktioner", och - efter en viss inkörningstid - känns det nog som om man inte kan leva utan dem.

Förutom grep-familjen och andra Unix-utiliteter har de flesta programspråk numera någon variant av RE, antingen direkt i språket (som Perl och Ruby) eller som standardbibliotek (som Java och Python) eller som tredjepartsbibliotek (de flesta andra språken). Personligen är jag väldigt förtjust i Perl och Rubys RE-operatorer.

Anledningen att jag skriver om detta just nu är att jag hittade sajten
Regular expression Library som är en kommunitet där man kan läsa, skriva och kommentera RE.

En bra finess är att det finns både "Sample Matches" och "Sample Non-Matches", dvs exempel både på textsträngar som matchar ett RE-uttryck och sådana som inte matchar. Det finns även en sida där man kan testa ett speciellt RE (valet "Test" på en RE-sida). Sajten har också ett ratingsystem som möjligen kan bli användbar.

Det stora poängen med sajten är nog mer att få inspiration än att hitta den korrekta lösningen på sitt specifika problem, vilket väl egentligen alltid är fallet med kokboks-lösningar. T.ex. är det lite vanskligt, kanske till och med farligt beroende på applikationen, att tro att man matchar precis alla möjliga varianter av epost-adresser (From:-raden i ett mail) med de uppräkningar som finns i kategorin email. I många fall är de naturligtvis användbara. Så var varsam!

Sajten kan bli riktigt intressant om den får hålla på ett tag till.


Här är lite länkar till vidareinformation om reguljära uttryck.


När jag började bli riktigt fast i RE-träsket skrev jag MakeRegex, som tar en lista med ord och gör om till ett relativt enkelt RE. Programmet har många begränsningar, men jag (liksom några andra) har faktiskt haft riktig nytta av det några gånger. Man kan leka med det både som CGI-program och som Java-applet. En lite mer useless variant är MakeRegex web som skapar ett RE för en webbsida.

Posted by hakank at augusti 10, 2003 02:11 EM Posted to Reguljära uttryck etc