Thread Doppelbuchstaben umklammern (war: Help)
(22 answers)
Opened by Gast at 2006-04-10 16:52
[quote=Dubu,10.April.2006, 23:23]Dann probier's nochmal. ;)
Oder lies perlre. Quote Und wie? Quote Tja, ist wohl POSIX-Standard.[/quote] Also bei mir hat "\w" noch nie auf "1" gematcht. Kann ich so oft wiederholen wie ich möchte. Und ein Blick in perlre bestätigt das gleiche. Quote heißt für mich so viel wie matcht auf alle alphanumerischen zeichen + den unterstrich. 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. Wenn du es also so siehst ist "\w" identisch zur folgenden Zeichenklasse: "[[:alpha:]_]". Naja fast. Unicode Zeichen können sich nämlich aus mehrere einzelnen zeichen zusammen setzen, und ein neues zeichen Bilden. Das erkennt "\w" nicht. Aber "\X" erkennt das als ein zeichen. Ich denke mal "[:alpha:]" erkennt solche zusammengesetzte Zeichen auch. 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? Du verwechselst jetzt aber nicht "\w" mit "\W", oder? Das zweite matcht schon auf Ziffern... Ohne Posix Zeichenklasse könnte man das folgendermaßen lösen. Code: (dl
)
s/(?!_)(\w)\1/($1$1)/ig Ist ein Negatives Lookahead Konstrukt das auf eine Position matcht, wenn danach kein "_" kommt. Also kurz gesagt jedes "_" wird überpsungen. Danach wird "\w" angewendet. Da ja jedes "_" übersprungen wird, kann ja nur noch ein alphanumerisches zeichen in der Variablen $1 sein. Natürlich auch alle Möglichen Unicode alphanumerischen Zeichen die zum aktuellen locale gehören. Was aber denke ich gewünscht sein sollte. Quote Nichts gegen den Posix Standard. Aber was Reguläre Ausdrücke angeht ist der Posix Standard Meiner Meinung nach Müll.\n\n <!--EDIT|sid burn|1144708959--> Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
|