Schrift
[thread]7875[/thread]

Doppelbuchstaben umklammern (war: Help) (Seite 3)



<< |< 1 2 3 >| >> 23 Einträge, 3 Seiten
Strat
 2006-04-12 14:38
#64688 #64688
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=renee,11.04.2006, 12:43]Dein zweiter Code haut nicht hin:[/quote]
stimmt, sorry; das \B muss ein \b sein...
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/perl

use strict;
use warnings;

my $string = "hallsso";

$string =~ s/
\b # wortgrenze
([A-Za-z]*?) # ev. Buchstaben bis zum ersten vorkommen
([A-Za-z]) \2 # des doppelbuchstabens
([A-Za-z]*?) # noch ev. weitere buchstaben, egal, ob doppelt oder nicht
\b # bis zur naechsten wortgrenze
/($1$2$2$3)/gx;

print $string,"\n";

wenn man nur alle doppelten buchstaben klammern will => code 1
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
sid burn
 2006-04-13 03:36
#64689 #64689
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
[quote=ptk,11.April.2006, 20:44][quote=sid burn,11.04.2006, 10:16]Nehmen wir als Beispiel folgendes zeichen "á", (eigentlich wollte ich den Strich von links oben nach unten aber ist für das beispiel irrelevant). Das ganze setzt sich aus 2 Unicode Zeichen zusammen.[/quote]
Das stimmt so nicht. Man *kann* dieses Zeichen aus zwei Unicode-Zeichen ("a" und "combining acute") kombinieren, aber üblich ist das nicht. Normalerweise nimmt man da gleich \x{00e1} (LATIN SMALL LETTER A WITH ACUTE) und muss sich nicht mit \X und Normalisation (dazu gibt es auch ein Perl-Modul: Unicode::Normalize) herumschlagen.[/quote]
Wenn du in deinem Regulären Ausdruck direkt das Zeichen Schreibst, und nicht über Unicode, nur dann hast du natürlich die Probleme. Wenn du direkt in Unicode schreibst dann ist es eindeutig, und dann kann ja nur das gewünscht auch dabei heraus kommen. Denn von Unicode -> UTF-8 ist es ja Eindeutig. Nur Umgekehrt nicht.

Wenn du also das Zeichen direkt in deinem Perl Skript schreibst, kann dort letztendlich eine völlig andere Unicode folge heraus kommen, als du es letztendlich wolltest.

Weitere Probleme sind, du weißt ja nie wie Perl das eingelesene zeichen (aus einer Textdatei z.B.)wieder zurück in Unicode umwandelt. Von daher, wenn du in deinem Regulären Ausdruck nur das Zeichen mit einer Unicode Codierung benutzt, dann könnte Perl das selbe Zeichen, aber auch als Combining Character umwandeln. Dein Regulärer Ausdruck würde dann aber nicht mehr passen, obwohl es das selbe Zeichen ist.

Allerdings weiß ich jetzt nicht genau wie mächtig Unicode ist, vllt. wird ja auch in Unicode andere Unicode Zeichen gespeichert zu dennen es equivalent ist?\n\n

<!--EDIT|sid burn|1144885107-->
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
ptk
 2006-04-13 22:53
#64690 #64690
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
[quote=sid burn,13.04.2006, 01:36]Wenn du in deinem Regulären Ausdruck direkt das Zeichen Schreibst, und nicht über Unicode, nur dann hast du natürlich die Probleme.[/quote]Was meinst du mit "direkt schreiben" bzw. mit "Unicode"?
Quote
Wenn du direkt in Unicode schreibst dann ist es eindeutig, und dann kann ja nur das gewünscht auch dabei heraus kommen. Denn von Unicode -> UTF-8 ist es ja Eindeutig. Nur Umgekehrt nicht.
Nein. UTF-8 ist eine Kodierung für Unicode. In beide Richtungen ist es eindeutig.
<< |< 1 2 3 >| >> 23 Einträge, 3 Seiten



View all threads created 2006-04-10 16:52.