Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]8921[/thread]

whitespace != \s: wann ist ein Leerzeichen ein Leerzeichen



<< >> 6 Einträge, 1 Seite
dukeofnukem
 2007-04-13 13:07
#75974 #75974
User since
2007-01-15
47 Artikel
BenutzerIn
[default_avatar]
Interessehalber am Rande:

Schon mehrmals ist mir aufgefallen, daß Leerzeichen in regexps nicht gleichwertig mit denen in zu parsendem Text sind:

Der Text
Code: (dl )
Target: ABCDEF

in einem logfile wird nicht gematched durch:
Code: (dl )
s#(?<=Target: ABC)DEF#XYZ#x

aber wird gematched durch:
Code: (dl )
s#(?<=Target:\sABC)DEF#XYZ#x


Wie viele verschiedene Leerzeichen gibt es, wie findet man heraus wann ein einfaches Leerzeichen im script einem Leerzeichen in einem plain text logfile entspricht?

Hat das mit utf8, locales usw. usf. zu tun?

Ist ja nicht wirklich tragisch, aber man wundert sich :)

Sonnigen!
drum&bass is a state of mind
renee
 2007-04-13 13:12
#75975 #75975
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
\s = \r, \n, \t, " " (das Leerzeichen)

In Deinem Text steht vielleicht ein Tabulator...

Wenn es Unicode ist, enthält \s noch weitere Zeichen...

Mehr siehe perlre.
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
RalphFFM
 2007-04-13 14:02
#75976 #75976
User since
2006-11-16
258 Artikel
BenutzerIn
[Homepage] [default_avatar]
Wie renee schon sagte: perldoc perlre:
The "/x" modifier itself needs a little more explanation. It tells the regular expression parser to ignore whitespace that is neither back&‐slashed nor within a character class ...
renee
 2007-04-13 14:27
#75977 #75977
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
stimmt, das habe ich total übersehen, das kommt natürlich noch dazu...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Strat
 2007-04-13 15:46
#75978 #75978
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
wenn du wirklich nur ein leerzeichen mit /x matchen willst, einfach das leerzeichen escapen, z.B.
Code: (dl )
s#(?<=Target:\ ABC)DEF#XYZ#x
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
sid burn
 2007-04-14 19:26
#75979 #75979
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
Also

(Whitespace == \s) ist schon richtig
(Whitespace != Leerzeichen).

Unter einem Whitespace versteht man jedes Zeichen das bei der Ausgabe sozusagen keine "Tinte" verschwenden würde.

Leerzeichen ist z.B. ein Whitespace. Genauso ist aber \r der Tabulator oder ein Newline Zeichen auch ein Whitespace. Mit UTF8 kommen dann nochmal etliche andere Whitespace hinzu. z.B. gibt es Leerzeichen an dennen ein Text nicht umgebrochen werden darf etc. Soetwas erkennt dann \s auch.
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
<< >> 6 Einträge, 1 Seite



View all threads created 2007-04-13 13:07.