Thread Zwei Zeichen _gleichzeitig_ in String finden (19 answers)
Opened by geloescht at 2012-06-20 18:13

payx
 2012-06-21 09:40
#159281 #159281
User since
2006-05-04
564 Artikel
BenutzerIn

user image
Hallo HP-User,

2012-06-20T17:18:52 ?
Beispiel A)geht nur bei einem Leerzeiche in Folge?

Code: (dl )
$internetpost =~ s/ //g;


Beispiel B) soll auch Space, space,space, usw. entfernen können?

Code: (dl )
$internetpost =~ s/\s+//g;


Wo ist der Unterschied?


Deine beiden Beispiele löschen beide alle Leerzeichen aus der Zeichenkette, so gesehen auf den ersten Blick kein Unterschied. Du könntest auch schreiben s/ +//g oder s/\s//g.

Es gibt aber (zumindest) folgende Unterschiede:

\s löscht außer Leerzeichen auch alle anderen Arten von Whitespace, also auch Tabs usw., vgl. perlretut: \s matches a whitespace character, the set [\ \t\r\n\f] and others.

Wenn die Regexp mehr als ein Zeichen prüft, macht es trotz des g-Modifiers einen Unterschied, ob Du den +-Metacharacter verwendest oder nicht, z.B. s/€\s+/€/g löscht nach allen EUR-Zeichen alle Whitespacezeichen (alle anderen Whitespacezeichen im String bleiben aber unberührt). Oder s/^(\d+)\s+/$1\t/ ersetzt nach einer Ziffernfolge am Zeilenanfang alle Whitespacezeichen durch einen Tab. Beide würden ohne den +-Metacharacter (nach dem \s) jeweils nur das erste Whitespacezeichen nach dem EUR-Zeichen oder der Ziffernfolge ersetzen.

HTH
Grüße
payx

View full thread Zwei Zeichen _gleichzeitig_ in String finden