Thread Doppelbuchstaben umklammern (war: Help) (22 answers)
Opened by Gast at 2006-04-10 16:52

Dubu
 2006-04-11 04:08
#64682 #64682
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
[quote=sid burn,11.04.2006, 00:06]Also bei mir hat "\w" noch nie auf "1" gematcht. Kann ich so oft wiederholen wie ich möchte.
[/quote]
Dann ist dein Perl kaputt.
Beispiel gefällig?
Code: (dl )
1
2
$ perl -Mstrict -Mwarnings -le 'my $str="a1+b2+c3"; $str =~ s/\w/./g; print $str'
..+..+..


Quote
Und ein Blick in perlre bestätigt das gleiche.

Quote
\w  Match a "word" character (alphanumeric plus "_")

heißt für mich so viel wie matcht auf alle alphanumerischen zeichen + den unterstrich.

Und was heißt "alphanumerisch"? Richtig: "alphabetisch + numerisch".

Quote
Was da aber nicht bei steht. Es matcht natürlich auch auf alle Unicode zeichen die in der Locale sind, und nicht nur auf [a-zA-Z_] was manche meinen.

Naja, es steht implizit drin. Es passt auf alle alphanumerischen Zeichen der Locale + Unterstrich. Wenn deine Locale auf Unicode basiert, dann passen auf \w eben alle Unicode-Zeichen, die (in deiner Locale?) alphanumerisch sind. Plus den Unterstrich.

Quote
Wenn du es also so siehst ist "\w" identisch zur folgenden Zeichenklasse: "[[:alpha:]_]". Naja fast.

Eher "[[:alnum:]_]".

Quote
Unicode Zeichen können sich nämlich aus mehrere einzelnen zeichen zusammen setzen, und ein neues zeichen Bilden. Das erkennt "\w" nicht.

Hm. Wie meinst du das? Sowohl UTF-8 als auch UTF-16 bestehen natürlich aus Mehrbytesequenzen, das ist klar. Aber jede Sequenz sollte doch eindeutig sein, oder?

Quote
Aber "\X" erkennt das als ein zeichen. Ich denke mal "[:alpha:]" erkennt solche zusammengesetzte Zeichen auch.

Ah, jetzt weiß ich, was du meinst. Man kann Zeichen mit mehreren "Akzenten" kombinieren, z.B. im Arabischen. Tja, da habe ich auch keine Ahnung, wie das in Regexen aussieht.
Ich erwarte aber, dass \w und [:alnum:] bis auf den Unterschied mit dem Unterstrich gleich funktionieren.

Quote
Allerdings finde ich in perlre dazu keine Informationen, dass es das auch tut. Ich kann aber Morgen nochmal im Reguläre Ausdrücke Buch nachlesen ob es das nun tut, oder nicht. Sollte aber an der Tatsache das es immer noch keine Ziffern erkennt nichts dran ändern?

Tut's ja doch. ;)

Quote
Du verwechselst jetzt aber nicht "\w" mit "\W", oder? Das zweite matcht schon auf Ziffern...

Nö, tut's nicht. ;)

View full thread Doppelbuchstaben umklammern (war: Help)