🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: be.comp.programming
Article #8881

Re: Vraagje over complexe regular expression

#8881
From: Dominique Devriese
Date: Sun, 09 Jun 2002 15:13
109 lines
5467 bytes
WimVDE <nospam@mail.box> writes:

> "WimVDE" wrote:
> 
> > Nou ja, ik vraag schijnbaar wel iets vrij complex :)
> > Ik zit nu al enkele uren te knoeien met reguliere expressies, maar krijg 
> > er niets deftigs uit. Is het uberhaupt wel mogelijk met een reguliere 
> > expressie?
> 
> "WimVDE" wrote:
> 
> > Nou ja, ik vraag schijnbaar wel iets vrij complex :)
> > Ik zit nu al enkele uren te knoeien met reguliere expressies, maar krijg 
> > er niets deftigs uit. Is het uberhaupt wel mogelijk met een reguliere 
> > expressie?
> 
> Ik ben weeral ietsje verder, maar nog niet ver genoeg :)
> Het blijkt dat Gravity de hele body van een bericht parsed als 1 string. 
> De regelafbrekingen gebeuren door een \n karakter.
> 
> Dus, ik had al:
> 
> RegExp: --.*www\.provider\.be/wimvde
> 
> Dat matcht op het voorkomen van mijn website in iemands signature. Nu is 
> het de bedoeling dat dit omgekeerd wordt. Er mag geen match zijn wanneer 
> mijn site voorkomt in iemand's signature. Hoe pak ik dat aan bij een 
> reguliere expressie? Voor een enkel karakter weet ik dat de negatie 
> gebeurt met het ^-teken, maar hoe zit het met een groep zoals 
> bovenstaande voorbeeld?
> 
> Nu om ervoor te zorgen dat er niet gematcht wordt op gequote text heb ik 
> volgende expressie:
> 
> RegExp: \n[^>][^\n]*wimvde
> 
> Die \n staat er om Gravity duidelijk te maken dat een quote (>) steeds 
> aan het begin van een regel begint. Dit om misverstanden te vermijden 
> bij het vermelden van een url bijvoorbeeld (<url:http://www.site.be/>). 
> De [^>] wijst erop dat aan het begin van de regel _geen_ '>' quote-teken 
> mag voorkomen (er mag geen match zijn in de quote). Om er nu voor te 
> zorgen dat er niet gematcht wordt op volgende situatie:
> 
> ---------------------------------------------------------------------
> > zomaar wat bladvulling om het gewenste duidelijk
> > te maken aan de lezers van deze thread.
> > En WimVDE staat nu in het quoteblok
> 
> Antwoord blah blah
> ---------------------------------------------------------------------
> 
> Staat er ook [^\n]* wat betekent dat er na de quote geen linebreak mag 
> voorkomen. Anders zou na het parsen van 'de eerste regel' meteen 
> doorgegaan worden met de andere regels tot het voorkomen van WimVDE. De 
> [^\n]* zorgt er dus voor dat alles lijn per lijn gebeurt.
> 
> Dat werkt dus uitstekend. Maar hoe pas ik het aan zodat er wel een match 
> is als WimVDE voorkomt in het eigenlijke bericht? Ik zou denken:
> 
> RegExp: \n[^>]?[^\n]*wimvde
> 
> De [^>]? zou er volgens mij voor moeten zorgen dat:
> 
> ---------------------------------------------------------------------
> > En WimVDE staat nu in het quoteblok
> ---------------------------------------------------------------------
> 
> Geen match geeft, en
> 
> ---------------------------------------------------------------------
> En nu staat WimVDE in het eigenlijke antwoord
> ---------------------------------------------------------------------
> 
> Wel een match geeft. Of ben ik mis? Maar dat schijnt dus niet te werken 
> :(
> 
> (dat m'n naam ook in de eerste regels kan voorkomen in het geval van een 
> reply laat ik nog eventjes buiten beschouwing - eerst alles stap voor 
> stap implementeren)

Hm... persoonlijk vind ik het nogal vergezocht om dit met ��n
reguliere expressie te proberen te doen...  Ben je niet beter met een
perl-programmatje of zo... ?
sjuus
domi

(ik ken geen perl, maar ik denk dat het er ongeveer zo zou moeten
uitzien:
#!/bin/perl
while ( $regel = <> )
{
        if ( $regel =~ m/^--.*$/ ) # begin van het signature
                exit 1;
        if ( $regel =~ m/^>.*$/ ) # een gequote blok
                next;
        if ( $regel =~ m/^.*WimVDE.*$/ ) # een regel met WimVDE
                exit 0;
}
exit 1;

Dit programmatje retourneert dan 0 als je de mail moet lezen, en
anders 1... Ik weet niet direct hoe je dat dan kan laten samenwerken
met je procmail ( of gravity, maar ik noch apt-cache kennen dat... ),
maar dat zou niet zo'n groot probleem mogen zijn...
sjuus
domi

-- 
Dominique Devriese
Technical Details
Message-ID: <87660seav2.fsf@pandora.be>
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!supernews.com!newsswitch.lcs.mit.edu!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!newsfeed.icl.net!colt.net!newsfeed00.sul.t-online.de!t-online.de!skynet.be!skynet.be!ossa.telenet-ops.be!afrodite.telenet-ops.be.POSTED!not-for-mail
References: <MPG.176adae1b92f722d989680@news.telenet.be> <dd7M8.18513$ud.2228@afrodite.telenet-ops.be> <MPG.176b28cdfdb4da99989681@news.telenet.be> <MPG.176c2b128c40e687989682@news.telenet.be>

Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII
X-Google-Thread: fcea4,4dcdc590c5f344be
X-Google-Attributes: gidfcea4,public
X-Google-ArrivalTime: 2002-06-09 08:13:43 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!supernews.com!newsswitch.lcs.mit.edu!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!newsfeed.icl.net!colt.net!newsfeed00.sul.t-online.de!t-online.de!skynet.be!skynet.be!ossa.telenet-ops.be!afrodite.telenet-ops.be.POSTED!not-for-mail
Sender: domi@flap
Newsgroups: be.comp.programming
Subject: Re: Vraagje over complexe regular expression
References: <MPG.176adae1b92f722d989680@news.telenet.be> <dd7M8.18513$ud.2228@afrodite.telenet-ops.be> <MPG.176b28cdfdb4da99989681@news.telenet.be> <MPG.176c2b128c40e687989682@news.telenet.be>
From: Dominique Devriese <fritmebufstek@pandora.be>
Message-ID: <87660seav2.fsf@pandora.be>
Lines: 109
User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.2
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-15
Content-Transfer-Encoding: 8bit
Date: Sun, 09 Jun 2002 15:13:42 GMT
NNTP-Posting-Host: 213.118.172.138
X-Complaints-To: abuse@telenet.be
X-Trace: afrodite.telenet-ops.be 1023635622 213.118.172.138 (Sun, 09 Jun 2002 17:13:42 MET DST)
NNTP-Posting-Date: Sun, 09 Jun 2002 17:13:42 MET DST
Organization: Telenet Internet