Hallo Michael, On Saturday 10 September 2005 11:21, Michael Bienia wrote: > On 2005-09-09 23:00:40 +0200, Gebhard Dettmar wrote: > > On Friday 09 September 2005 13:21, Michael Bienia wrote: > > > Wenn jetzt Perl mit dabei ist, dann sollte man auch die > > > Möglichkeiten der Perl Regex nutzen: > > > echo "Bad Ne u branden burg" |perl -pe > > > 's/(?<=[A-Za-z])\s+(?=[a-z])//g' > > > > Das sind aber extended Patterns. Die raff ich nicht (A zero-width > > positive look-behind assertion., les ich grade. Ah ja ;-) Und wie > > gehen deine beiden Ausdrücke zusammen? > > Also: ?<=[A-Za-z])\s+ heißt, wenn ich das Beispiel aus der manpage > > richtig übertrage: Ein oder mehr Leerzeichen, gefolgt von Groß- oder > > Kleinbuchstabe. > > Fast. Falsche Richtung, es ist eine Look-behind-Zusicherung. Ich schaue > links von einem oder mehr Leerzeichen, ob da ein Groß- oder > Kleinbuchstabe ist, ohne diesen Buchstabe zum Treffer zu zählen. > > > Und wie lese ich s+(?=[a-z]) > > Das ist eine Look-ahead-Zusicherung, ich schaue rechts vom einem oder > mehr Leerzeichen ob da ein Kleinbuchstabe folgt, wiederum ohne es zum > Treffer zu zählen. > > > Was meint "without including the tab in $&." in der Manpage (man > > perlre)? > > In $& (aka $MATCH) wird der letzte Treffer vom Pattern-Matching > gespeichert. Das bedeutet bei dem Beispiel aus der Manpage > "/\w+(?=\t)/", dass in $& nur das Wort (\w+) gespeichert wird, aber im > Suchtext ein Wort gefolgt von einem Tab enthalten sein muss. > > > Das einzige, was ich hier schnalle, ist, dass du nur Leerzeichen > > zwischen Kleinbuchstaben ersetzt, um BadN... zu vermeiden. > > Das Pattern nochmal kurz erklärt: > - suche nach einem oder mehr Leerzeichen: \s+ > - vor den Leerzeichen muss ein Groß- oder Kleinbuchstabe sein: > (?<=[A-Za-z]) > - nach den Leerzeichen muss ein Kleinbuchstabe sein > (?=[a-z]) > > Perl durchsucht jetzt den Suchstring nach einem oder mehr Leerzeichen, > für die die beiden Zusicherungen erfüllt sind. In $& haben wir dann nur > die Leerzeichen \s+, die Buchstaben gehören nicht dazu. > > Da der nachfolgende Buchstabe beim Suchen noch nicht verbraucht wurde > (wir haben ihn uns nur angesehen), kann Perl dort wieder ansetzen. > Genial, bin beeindruckt. Für die Erläuterung bin bestimmt nicht nur ich dir dankbar (dito für Frank) :-) > Michael Gebhard
-- Caution: breathing may be hazardous to your health.

