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. Michael -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)