Article View: be.comp.programming
Article #5235Re: Regex gezocht :-)
From: Gunter Schelfhout
Date: Thu, 15 May 2003 21:35
Date: Thu, 15 May 2003 21:35
54 lines
3100 bytes
3100 bytes
Philip Paeps wrote:
> Hoi -
>
> Ik ben momenteel in twee stukjes software gelijk ondersteuning voor URIs
> aan't
> opruimen. Ik ben nu op zoek naar een relatief eenvoudige regex die de
> meest gangbare URIs zou kunnen matchen.
>
> Orgineel dacht ik aan iets als:
>
> "((((ht|f)tps?)|mailto|news):(//)?[^\\ >\"\\t]*|www\\.[-a-z0-9.]+)[^\\
> ,;\\t>\">]*"
m/((ht|f)tps?)|mailto|news):/{2}(\w+\.){1,}\w{2,4}/
In stukken:
m/
((ht|f)tps?) # http|https|ftp|ftps
|mailto|news # spreekt voor zich
: # de colon
/{2} # de //
(\w+\.){1,} # minstens 1 keer een woord, gevolgd door punt. of (\w+\.)+
\w{2,4}$ # eindigend met de suffix be, com, aero, bizz, enz..
/x
Bovenstaande is niet getest. (ben net bezig aan chapter 5 van de Camel ;-)
> Maar die matcht wat te veel naar mijn zin, en is niet zo goed in het
> uitpluizen van numeric URIs. Dan dacht ik even aan (watch your eyes):
>
>
"\\b(?:https?|ftp|mailto|news)://(?:[^:@/]*(?::[^:@/]*)?@)?(?:(?:[^\\W_](?:(?:-(?!-)|[^\\W_]){0,61}[^\\W_])?\\.)+[a-z]{2,6}\\.?|localhost|(?:(?:2[0-4]\\d|25[0-5]|[01]?\\d\\d?)\\.){3}(?:2[0-4]\\d|25[0-5]|[01]?\\d\\d?)|\\[(?:(?:[0-9A-F]{0,4}:){1,7}[0-9A-F]{1,4}|(?:[0-9A-F]{0,4}:){1,3}(?:(?:2[0-4]\\d|25[0-5]|[01]?\\d\\d?)\\.){3}(?:2[0-4]\\d|25[0-5]|[01]?\\d\\d?))\\])(?::\\d+)?(?:/[^)\\>\"\\s]*|$|(?=[)\\>\"\\s]))"
Yeikes, was da?
Ik veronderstel dat je dit tracht te klaren met Perl?
Gooi het desnoods in een block van conditionals, zodat je het wat kan
splitsen.
> Die laatste wordt ook geacht numerieke IPv6 URIs te vangen, maar ik vrees
> dat die wat gevaarlijk is voor de mentale gezondheid van iemand die het
> ding na mij nog wil lezen :-)
Ik doe de moeite niet eens. ;-)
> Mijn vraag dus: heeft er iemand een _goeie_ regex die ook wat simpel is,
> en genoeg matcht maar niet te veel?
>
> - Philip [ik vraag niet veel h� :-)]
>
--
Blood, sweat & tears
Technical Details
Message-ID:
<gKTwa.4075$1u5.338@afrodite.telenet-ops.be>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-06!sn-xit-09!supernews.com!newshosting.com!news-xfer2.atl.newshosting.com!btnet-peer0!btnet-peer!btnet!newsfeed.london1.eu.level3.net!level3eu!ossa.telenet-ops.be!afrodite.telenet-ops.be.POSTED!not-for-mailReferences:
<eiTwa.4046$1u5.427@afrodite.telenet-ops.be>Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII X-Google-Thread: fcea4,684f38c17c2adebc X-Google-Attributes: gidfcea4,public X-Google-ArrivalTime: 2003-05-15 14:36:07 PST Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-06!sn-xit-09!supernews.com!newshosting.com!news-xfer2.atl.newshosting.com!btnet-peer0!btnet-peer!btnet!newsfeed.london1.eu.level3.net!level3eu!ossa.telenet-ops.be!afrodite.telenet-ops.be.POSTED!not-for-mail From: Gunter Schelfhout <nospam@please.com> Subject: Re: Regex gezocht :-) Newsgroups: be.comp.programming References: <eiTwa.4046$1u5.427@afrodite.telenet-ops.be> Lines: 54 User-Agent: KNode/0.7.1 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7Bit Message-ID: <gKTwa.4075$1u5.338@afrodite.telenet-ops.be> Date: Thu, 15 May 2003 21:35:08 GMT NNTP-Posting-Host: 213.118.153.61 X-Complaints-To: abuse@telenet.be X-Trace: afrodite.telenet-ops.be 1053034508 213.118.153.61 (Thu, 15 May 2003 23:35:08 MET DST) NNTP-Posting-Date: Thu, 15 May 2003 23:35:08 MET DST Organization: Telenet Internet