[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Mutt Konfiguration



Hallo Juergen,

* Juergen Christoffel schrieb [25-05-06 11:07]:
> On Wed, May 24, 2006 at 10:28:34AM +0200, Udo Mueller wrote:
> > Bitte ändere Zeile 35 von
> > 
> > if (m/<(.*\@.*)>/) {
> > 
> > nach
> > 
> > if (m/.*<(.*?\@.*?)>.*/) {
> 
> OK, ich sehe was Du machst, aber ich weiss noch nicht, warum (s.u.).
> 
> Mit dem initialen ".*" schiebst Du den Match ganz nach rechts, findest also
> das am weitesten rechts stehende Paar "<...>". Das ".*" am Ende ist
> ueberfluessig, weil es nicht geklammert ist, um etwas zu extrahieren.

Ack. Ich habe die .* auf beide Seiten geschrieben, damit ich greedy
auf beiden Seiten der <> bin.

> Die nicht-gierige Variante *? von * nimmst Du, um zu vermeiden, dass Du bei
> Strings wie "<foo><bar>" alles zwischen dem ersten "<" und dem letzten ">"
> in der Klammer matchst. Besser (weil "selbst-dokumentierender") waere statt
> dessen
> 
>   if (m/.*<([^>]+\@[^>]+)>/)

Ack.

> Bei Regexps ist es sehr oft hilfreich, genau zu sagen, was man _nicht_ will
> (auch fuer den NFA bzw. DFA "unten drunter", der dann nicht so viele
> Alternativen ausprobieren muss, um zu sagen "klappt nicht!").

Rexexp sind schön, aber leider nicht wirklich leicht lernbar...

> > Es gibt in meinem Keyring Einträge, in denen 2 < und 2 > vorkommen.
> > Dann greift deine Rexexp nicht.
> 
> Hmmm, in meinem Keyring kommt das nicht vor. Wie sehen diese Eintraege denn
> aus? Wenn Du mir das sagst, kann ich eine bessere Regexp angeben.

uid           Joachim Schlöffel (<unsigniert>) <JS@Netsliders.de>
 
> Das erste Beispiel war ad hoc (d.h. ich gebe zu: habe mir nicht die Specs
> fuer den Keyring angesehen ;-). Die Eintraege nach "UID ..." scheinen mir
> aber das zu sein, was in Emails in der From-Zeile steht, ggf. mit runden
> Klammern fuer Kommentare, auch ohne "<...>" wie ich gerade sehe, aber wohl
> kaum mit zwei Paar spitzen Klammern, ... hmm, ... es sei denn, die stehen
> in "(...)" im Kommentar?

Genau.

> Um also auch Zeilen zu parsen, die gar keine "<...>" enthalten, muss das
> Pattern aufwendiger werden. Wir naehern uns dann bald dem klassischen
> Problem, Adressen nach RFC-2822 zu parsen. Die Loesung dazu geht in Jeffrey
> Friedls hervorragendem Buch "Mastering Regular Expressions" ueber eine
> komplette Buchseite ;-0

Sollte ich mir auch mal besorgen.

> Wir koennen also zumindest schreiben:
> 
>   m/<?([^>\s]+\@[^>\s]+\.[^>\s]+)>?/
> 
> Damit matchen wir Email-artige Zeichenketten, vorzugsweise innerhalb der
> spitzen Klammern, aber auch ohne diese. Auf jeden Fall aber nicht mehr
> ueber zwei Klammerpaare hinweg.

Klappt hier. Danke!

Mit freundlichen Grüßen

Udo Müller

-- 
ComputerService Udo Müller              Tel.: 0441-36167578
Schöllkrautweg 16                       Fax.: 0441-36167579
26131 Oldenburg       info@cs-ol.de     Mobil: 0162-4365411

Attachment: signature.asc
Description: Digital signature


Reply to: