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/<([EMAIL PROTECTED])>/) {
> >
> > nach
> >
> > if (m/.*<([EMAIL PROTECTED])>.*/) {
>
> 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/.*<([^>[EMAIL PROTECTED]>]+)>/) 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>) <[EMAIL PROTECTED]> > 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/<?([^>[EMAIL PROTECTED]>\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 [EMAIL PROTECTED] Mobil: 0162-4365411
signature.asc
Description: Digital signature

