🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: be.comp.programming
Article #5235

Re: Regex gezocht :-)

#5235
From: Gunter Schelfhout
Date: Thu, 15 May 2003 21:35
54 lines
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-mail
References: <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