Thread View: be.comp.programming
18 messages
18 total messages
Started by Philip Paeps
Thu, 15 May 2003 21:05
Regex gezocht :-)
Author: Philip Paeps
Date: Thu, 15 May 2003 21:05
Date: Thu, 15 May 2003 21:05
29 lines
2538 bytes
2538 bytes
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>\">]*"
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]))"
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 :-)
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� :-)]
--
Philip Paeps
BOFH Excuse #3:
electromagnetic radiation from satellite debris
Re: Regex gezocht :-)
Author: 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
Re: Regex gezocht :-)
Author: Philip Paeps
Date: Thu, 15 May 2003 22:00
Date: Thu, 15 May 2003 22:00
38 lines
2965 bytes
2965 bytes
Gunter Schelfhout <nospam@please.com> wrote:
> Philip Paeps wrote:
> > 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}/
Dat ziet er inderdaad veel schattiger uit dat het monsterlijk beest dat ik
had. We gaat dat diertje eens grondig testen zie, thanks! :-)
> > 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?
Een regex die in de loop van een paar uur denken een eigen leven beginnen
leiden is, met als gevolg dat er niets meer mee aan te vangen valt :-P
> Ik veronderstel dat je dit tracht te klaren met Perl?
PCRE -> <http://www.pcre.org/>.
- Philip [test test test]
--
Philip Paeps
In any series of calculations, errors tend to occur
at the opposite end to the end at which you begin
checking for errors.
Re: Regex gezocht :-)
Author: Gunter Schelfhout
Date: Thu, 15 May 2003 22:14
Date: Thu, 15 May 2003 22:14
25 lines
1860 bytes
1860 bytes
Philip Paeps wrote:
[knip]
>> > 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}/
>
> Dat ziet er inderdaad veel schattiger uit dat het monsterlijk beest dat ik
> had. We gaat dat diertje eens grondig testen zie, thanks! :-)
>
Maar niet goed genoeg.
Dit doet blijkbaar wel beter zijn werk. (een paar keer getest met valide en
niet-valide URL's):
m/(((ht|f)tps?)|mailto|news):\/{2}(\w+\.)*\w+\.\w{2,4}$/
--
Blood, sweat & tears
Re: Regex gezocht :-)
Author: sotto
Date: Fri, 16 May 2003 07:48
Date: Fri, 16 May 2003 07:48
10 lines
1488 bytes
1488 bytes
Ik ben al een aantal keer regexp tegengekomen/nodig gehad, en moest telkens hulp in roepen van een derde...dus nu mijn vraag: Hoe lang duurt het om een stevige basis van dat chinees onder de knie te krijgen en... Welk (betaalbaar) boek moet ik hiervoor aanschaffen/halen in de bib? of, zijn er super-mega-fantastische gratis cursussen online die even goed zijn als een boek? thx & greetz, sotto (die misschien regexp gaat leren binnenkort)
Re: Regex gezocht :-)
Author: Gunter Schelfhout
Date: Fri, 16 May 2003 08:07
Date: Fri, 16 May 2003 08:07
24 lines
1870 bytes
1870 bytes
sotto wrote: > Ik ben al een aantal keer regexp tegengekomen/nodig gehad, > en moest telkens hulp in roepen van een derde...dus nu mijn vraag: > Hoe lang duurt het om een stevige basis van dat chinees onder de knie te > krijgen en... > Welk (betaalbaar) boek moet ik hiervoor aanschaffen/halen in de bib? > of, zijn er super-mega-fantastische gratis cursussen online die even goed > zijn als een boek? > Leer ineens Perl. Beginnen met: Learning Perl # �33,68 Programming Perl # �54,22 eventueel: Perl cookbook # �45,15 Mastering Regular Expressions # �38,49 Allen zijn ze van O'Reilly en dus per definitie betaalbaar. -- Blood, sweat & tears
Re: Regex gezocht :-)
Author: sotto
Date: Fri, 16 May 2003 09:56
Date: Fri, 16 May 2003 09:56
3 lines
1266 bytes
1266 bytes
Waarom perl leren? heb het enkel nodig soms in php en shell scriptjes die ik probeer te schrijven.
Re: Regex gezocht :-)
Author: Philip Paeps
Date: Fri, 16 May 2003 10:25
Date: Fri, 16 May 2003 10:25
29 lines
2070 bytes
2070 bytes
sotto <junk@sotto.be> wrote: > Ik ben al een aantal keer regexp tegengekomen/nodig gehad, Je hebt constant regexen nodig. Gewoon om je in de winkel naar de koffie te navigeren heb je een regex nodig :-) > en moest telkens hulp in roepen van een derde...dus nu mijn vraag: > Hoe lang duurt het om een stevige basis van dat chinees onder de knie te > krijgen en... Het probleem is niet echt het schrijven van het pattern. Het probleem is uitvissen wat je wil matchen en waar je moet stoppen. > Welk (betaalbaar) boek moet ik hiervoor aanschaffen/halen in de bib? <http://www.oreilly.com/catalog/regex/> > of, zijn er super-mega-fantastische gratis cursussen online die even goed > zijn als een boek? De perlre(1) manual page... - Philip -- Philip Paeps It is a simple task to make things complex, but a complex task to make them simple.
Re: Regex gezocht :-)
Author: Philip Paeps
Date: Fri, 16 May 2003 10:26
Date: Fri, 16 May 2003 10:26
17 lines
1700 bytes
1700 bytes
sotto <junk@sotto.be> wrote: > Waarom perl leren? Omdat het plezant is :-) > heb het enkel nodig soms in php en shell scriptjes die ik probeer te > schrijven. PHP gebruikt PCRE als regex-engine. Net als ongeveer alles in dit universum dat regexen gebruikt. - Philip -- Philip Paeps There is no safety in numbers, or in anything else.
Re: Regex gezocht :-)
Author: Gunter Schelfhout
Date: Fri, 16 May 2003 10:28
Date: Fri, 16 May 2003 10:28
22 lines
1971 bytes
1971 bytes
sotto wrote: > Waarom perl leren? > heb het enkel nodig soms in php en shell scriptjes die ik probeer te > schrijven. Dat is uiteraard geen verplichting. Je kunt idd enkel het boek 'Mastering Regular Expressions' aanschaffen. Maar ik veronderstel dat je PHP niet enkel gebruikt om html uit te printen, maar om input te valideren, forms te verwerken, databases aanspreken enz. Bovendien schrijf je wat shell scripts om (ik veronderstel) wat sysadministration te doen. Regular expressions zit ingebakken in Perl en maakt daar een groot deel van uit. Perl zou je dus makkelijk kunnen helpen bij al jouw taken. Je zou het kunnen zien als een complement. Soit, je ziet maar. ;-) -- Blood, sweat & tears
Re: Regex gezocht :-)
Author: Dominique Devriese
Date: Fri, 16 May 2003 12:34
Date: Fri, 16 May 2003 12:34
24 lines
2163 bytes
2163 bytes
sotto writes: sotto> Ik ben al een aantal keer regexp tegengekomen/nodig gehad, en sotto> moest telkens hulp in roepen van een derde...dus nu mijn sotto> vraag: Hoe lang duurt het om een stevige basis van dat sotto> chinees onder de knie te krijgen en... regexps zijn helemaal niet moeilijk.. ze zien er gewoon enorm ingewikkeld uit ( die van Philip toch ;p ) sotto> Welk (betaalbaar) boek moet ik hiervoor aanschaffen/halen in sotto> de bib? of, zijn sotto> er super-mega-fantastische gratis cursussen online die even sotto> goed zijn als een boek? er zijn genoeg goeie tutorials online, maar het hangt er natuurlijk vanaf of je liever uit een boek leert of online. Voor programmeer-dingen prefereer ik nog altijd online tutorials, omdat in die boeken alles meestal veel te uitgebreid is uitgelegd.. sjuus domi -- Beware of a tall black man with one blond shoe.
Re: Regex gezocht :-)
Author: Dirk Feytons
Date: Fri, 16 May 2003 20:07
Date: Fri, 16 May 2003 20:07
18 lines
1907 bytes
1907 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. Toevallig zag ik net in appendix B van RFC 2396 (http://www.ietf.org/rfc/rfc2396.txt) een regex staan voor URI's. Bekijk het eens zou ik zeggen. Mogelijk kan je het gebruiken, anders levert het misschien inspiratie op. -- Dirk (PGP keyID: 0x448BC5DD - http://www.gnupg.org - http://www.pgp.com) .oO� Do androids dream of electric sheep? �Oo.
Re: Regex gezocht :-)
Author: Philip Paeps
Date: Fri, 16 May 2003 20:20
Date: Fri, 16 May 2003 20:20
41 lines
3040 bytes
3040 bytes
Dominique Devriese <dominique.devriese@student.kuleuven.ac.be> wrote: > sotto writes: > > sotto> Ik ben al een aantal keer regexp tegengekomen/nodig gehad, en > sotto> moest telkens hulp in roepen van een derde...dus nu mijn > sotto> vraag: Hoe lang duurt het om een stevige basis van dat > sotto> chinees onder de knie te krijgen en... > > regexps zijn helemaal niet moeilijk.. ze zien er gewoon enorm ingewikkeld > uit ( die van Philip toch ;p ) Och. Enkel die dat een paar uur nodig hadden om 'gekweekt' te worden. Dat begint als een \w+ en dat eindigt als een iets meer complex beestje :-) > sotto> Welk (betaalbaar) boek moet ik hiervoor aanschaffen/halen in > sotto> de bib? of, zijn > sotto> er super-mega-fantastische gratis cursussen online die even > sotto> goed zijn als een boek? > > er zijn genoeg goeie tutorials online, maar het hangt er natuurlijk vanaf of > je liever uit een boek leert of online. Voor programmeer-dingen prefereer > ik nog altijd online tutorials, omdat in die boeken alles meestal veel te > uitgebreid is uitgelegd.. Mmm, matig mee akkoord :-) Ik hou nogal van dooie bomen. Een heel leuk initiatief om een beetje van the best of two worlds te genieten is Safari: <http://safari.ora.com/>. Je hebt daar verschillende abonnementsformules om de verschillende O'Reilly boeken online te lezen. Een dode boom legt volgens mij de 'principes' en de 'theorie' nog altijd beter uit dan de gemiddelde howto of tutorial. Ik ben een grote fan van learning by example, maar soms heb ik toch net iets meer nodig. - Philip -- Philip Paeps Do whatever your enemies don't want you to do.
Re: Regex gezocht :-)
Author: Philip Paeps
Date: Fri, 16 May 2003 20:20
Date: Fri, 16 May 2003 20:20
20 lines
2099 bytes
2099 bytes
Dirk Feytons <TaXaN@geenrommel.kotnet.org> wrote: > Philip Paeps wrote: > > 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. > > Toevallig zag ik net in appendix B van RFC 2396 > (http://www.ietf.org/rfc/rfc2396.txt) een regex staan voor URI's. Bekijk > het eens zou ik zeggen. Mogelijk kan je het gebruiken, anders levert het > misschien inspiratie op. Thanks :-) Nu heb ik al veel inspiratie. Iets zegt me dat de uiteindelijke regex weer zo'n beest zal worden om 'U' tegen te zeggen ;-) - Philip -- Philip Paeps A professor is one who talks in someone else's sleep.
Re: Regex gezocht :-)
Author: Dominique Devriese
Date: Fri, 16 May 2003 22:15
Date: Fri, 16 May 2003 22:15
35 lines
2793 bytes
2793 bytes
Philip Paeps writes: sotto> Welk (betaalbaar) boek moet ik hiervoor aanschaffen/halen in sotto> de bib? of, zijn er super-mega-fantastische gratis cursussen sotto> online die even goed zijn als een boek? >> >> er zijn genoeg goeie tutorials online, maar het hangt er >> natuurlijk vanaf of je liever uit een boek leert of online. Voor >> programmeer-dingen prefereer ik nog altijd online tutorials, >> omdat in die boeken alles meestal veel te uitgebreid is >> uitgelegd.. Philip> Mmm, matig mee akkoord :-) Philip> Ik hou nogal van dooie bomen. Een heel leuk initiatief om Philip> een beetje van the best of two worlds te genieten is Safari: Philip> <http://safari.ora.com/>. Je hebt daar verschillende Philip> abonnementsformules om de verschillende O'Reilly boeken Philip> online te lezen. Philip> Een dode boom legt volgens mij de 'principes' en de Philip> 'theorie' nog altijd beter uit dan de gemiddelde howto of Philip> tutorial. Ik ben een grote fan van learning by example, Philip> maar soms heb ik toch net iets meer nodig. in zo'n geval lees ik meestal gewoon nog een tutorial, of knoei ik gewoon zo lang tot ik weet waarom al mijn vorige pogingen niet werkten ;) sjuus domi -- Zounds! I was never so bethumped with words since I first called my brother's father dad. -- William Shakespeare, "Kind John"
Re: Regex gezocht :-)
Author: Sam Mildener
Date: Sat, 17 May 2003 08:54
Date: Sat, 17 May 2003 08:54
30 lines
2109 bytes
2109 bytes
Gunter Schelfhout wrote:
> Philip Paeps wrote:
>
> [knip]
>
>>>> 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}/
>>
>> Dat ziet er inderdaad veel schattiger uit dat het monsterlijk beest
>> dat ik had. We gaat dat diertje eens grondig testen zie, thanks! :-)
>>
>
> Maar niet goed genoeg.
> Dit doet blijkbaar wel beter zijn werk. (een paar keer getest met
> valide en niet-valide URL's):
>
> m/(((ht|f)tps?)|mailto|news):\/{2}(\w+\.)*\w+\.\w{2,4}$/
Gaat deze en de vorige niet het .museum top level domain tegenhouden?
--
Sam Mildener
Re: Regex gezocht :-)
Author: Gunter Schelfhout
Date: Sat, 17 May 2003 10:36
Date: Sat, 17 May 2003 10:36
29 lines
2350 bytes
2350 bytes
Sam Mildener wrote:
[knip]
>>
>> Maar niet goed genoeg.
>> Dit doet blijkbaar wel beter zijn werk. (een paar keer getest met
>> valide en niet-valide URL's):
>>
>> m/(((ht|f)tps?)|mailto|news):\/{2}(\w+\.)*\w+\.\w{2,4}$/
>
> Gaat deze en de vorige niet het .museum top level domain tegenhouden?
Je hebt uiteraard gelijk.
Deze regex was dan ook op een paar minuten ineengezet zonder met alles
rekening te houden.
Je moet ergens wel een selectie maken. Deze regex is natuurlijk verre van
perfect en er zijn wel mogelijkheden om dit te perfectioneren.
Je zou alle extensies in een array kunnen plaatsen met '|' als separator en
dit in de regex gooien. Dit is de nauwkeurigste manier, maar dan moet je
eerst alle extensies ingeven en als er moeten bijkomen, dan....
Beter is bv het laatste ( dit dus: \.\w{2,4}$ ) te veranderen naar
\.\w{2,3}$ en vervolgens de uitzonderingen erbij plaatsen via alternation
('|')
--
Blood, sweat & tears
RegEx Coach - de ideale tutor - Re: Regex gezocht :-)
Author: Kris De Decker http://www.jerboa...
Date: Sun, 18 May 2003 00:57
Date: Sun, 18 May 2003 00:57
42 lines
2676 bytes
2676 bytes
> of, zijn er super-mega-fantastische gratis cursussen online die even goed > zijn als een boek? Kijk eens naar RegEx Coach >> http://www.weitz.de/regex-coach/ ---------------------------------------- Abstract The Regex Coach is a graphical application for Linux and Windows which can be used to experiment with (Perl-compatible) regular expressions interactively. It has the following features: It shows whether a regular expression matches a particular target string. It can also show which parts of the target string correspond to captured register groups or to arbitrary parts of the regular expression. It can "walk" through the target string one match at a time. It can simulate Perl's split and s/// (substitution) operators. It tries to describe the regular expression in plain English. It can show a graphical representation of the regular expression's parse tree. It can single-step through the matching process as performed by the regex engine. Everything happens in "real time", i.e. as soon as you make a change somewhere in the application all other parts are instantly updated. ---------------------------------------- RegEx coach is een leuk en handig programma - ideaal om te experimenteren met regex's. Heb ook O'Reilly's "Mastering Regular Expressions" gelezen - dat is een goed boek met leesbare uitleg en verstaanbare voorbeelden. Het legt een goede basis om op verder te bouwen >> http://www.oreilly.com/catalog/regex/ sukses, Kris De Decker ____________________ http://www.jerboa.be = Krachtige software voor de prijsbewuste KMO [Projectbeheer] = Projecta [HACCP] = HaccPack [Productiebeheer] = Insight [Vastgoedbeheer] = FullFill [Onderhoud] = Softmaint [Documentbeheer] = DocShare
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads