Schrift
[thread]8165[/thread]

Steuerzeichen ausgeben: ohne es auszufühen

Leser: 1


<< |< 1 2 >| >> 16 Einträge, 2 Seiten
pktm
 2006-07-15 01:17
#68095 #68095
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Hallo!

Gibt es eine Möglichkeit Steuerzeichen auszugeben?
Nehmen wir an, wir hätten einen String: my $s = "\s";
Wenn ich den jetzt ausgebe (print $s;), dann erhalte ich eine leere Ausgabe. Ich möchte da aber \s stehen haben.
Geht das?

Grüße, pktm
http://www.intergastro-service.de (mein erstes CMS :) )
betterworld
 2006-07-15 03:43
#68096 #68096
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
Code: (dl )
1
2
3
$ perl -wle 'print "\s"'
Unrecognized escape \s passed through at -e line 1.
s


Wenn Du buchstäblich "\s" ausgeben willst, solltest Du den Backslash mit einem zweiten Backslash escapen.\n\n

<!--EDIT|betterworld|1152920676-->
nepos
 2006-07-15 03:43
#68097 #68097
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hm,
Code (perl): (dl )
my $s = "\\s"; print $s;
sollte das doch machen oder?
styx-cc
 2006-07-15 03:44
#68098 #68098
User since
2006-05-20
533 Artikel
BenutzerIn

user image
Du musst des Maskieren: \\s
MfGhttp://de.selfhtml.org/perl/sprache/zeichenketten.htm#maskierung

MfG
Pörl.
betterworld
 2006-07-15 03:45
#68099 #68099
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
Boah, Ihr seid ja noch alle wach... Um diese Tageszeit passiert es selten, dass 3 Leute in derselben Minute antworten :)
pktm
 2006-07-15 11:39
#68100 #68100
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Naja, das Problem ist, dass ich das Steuerzeichen aus einer RegEx erhalte.
Dort kann ich doch schlacht maskieren oder?
Hier mal ein Stück Code:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
            my $datenMitMonatsnamen = qr/
(
\d\d?\.
\s+
(?:Januar|Februar|März|April|Mai|Juni |Juli |August|(?:Oktober)|November|Dezember
|Jan\. |Feb\. | Apr\.| Jun\.|Jul\.|Aug\. |Okt\. |Nov\. |Dez\.)
\s+
(?:\d\d\d\d|\'?\d\d\D)
)
/x; # kommts bekannt vor?
if( $zuUntersuchenderBereich =~ m/($datenMitMonatsnamen)/) {

# Ausnahme in Wortliste aufnehmen,
# Position entsprechend verschieben
print "Monatsangabe ($1) gefunden bei Zeichen [\Q$z\E] "
. "an Position $c, "
. "Länge: " . length($1) . "\n";

push @ausnahmen, $1;
$c += length($1);
}


Dort würde ich gerne die Stelle ausgeben, an der etwas gefunden wird. Das ist aber i.d.R. etwas wie \n, \t, \s oder irgendwelche Kombinationen daraus. Und ich würde jetzt gerne wissen, was genau da gefunden wurde.

Grüße, pktm
http://www.intergastro-service.de (mein erstes CMS :) )
renee
 2006-07-15 13:03
#68101 #68101
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Du willst die Position des letzten Match haben?? Dann schau Dir mal @+ und @- an (perlvar)
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/
pktm
 2006-07-15 14:22
#68102 #68102
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Im Moment mache ich das über pos(). Das funktioniert auch. Was halt ganz nützlich wäre, wäre zu wissen wo gerade gesplittet wird. Ich möchte wissen, welcher Teil meiner RegEx gegriffen hat. Das sollte doch eigentlich durch eine Art round-trip beim Ergebnis möglich sein. Ich weis nur nicht wie ;-(
http://www.intergastro-service.de (mein erstes CMS :) )
renee
 2006-07-15 14:41
#68103 #68103
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=pktm,15.07.2006, 12:22][...] Ich möchte wissen, welcher Teil meiner RegEx gegriffen hat. [...][/quote]
Ich verstehe nicht so ganz worauf Du hinaus willst. Kannst Du es vielleicht mal anders beschreiben und mal ein Beispiel bringen?
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/
pktm
 2006-07-15 15:22
#68104 #68104
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Nehmen wir an ich habe folgenden Text (die Steuerzeichen sind nicht sichtbar):
Code: (dl )
1
2
3
4
5
Das\sist\sein\s\s\sText.\n\r
Jetzt\sein\sTab\tnoch\smehr_Text\shier.\n\r
\n\r
\n\r
\tblubb


Wenn ich den jetzt mit einer RegEx bearbeite:
Code: (dl )
1
2
3
4
5
while($text =~ m/\s+|\s*\t|\s*\n\r?|und so weiter/g) {
   print "Gefunden an Position", pos $text, "\n";
   print "Das gefundene Zeichen ist: [$1]\n";
   print "Leider kann ich nicht genau sagen, um was für ein Zeichen es sich handelt...\n";
}


Dann erhalte ich eine ganz tolle Ausgabe bei der immer als gefundenes Zeichen "[ ]" steht.
Ob da jetzt ein Leerzeichen, ein Tabulator oder ein Wagenrücklauf steht kann ich nicht genau sagen. Das einzige, was ich noch erkennen kann ist der Zeilenumbruch, weil der meine Ausgabe umbricht. Das will ich zum einen nicht und zum anderen soll da \n stehen.

Ich habe mir überlegt, einen Hash anzulegen, der die Steuerzeichen als Keys enthält und dann die Ausgabe auf $steuerzeichen{$1} umzulenken. SO könnte ich es mir per Hand hinschrieben.
Das Problem dabei ist, dass ich dann alle potentiellen Muster die einen Match erzeugen können in diesen Hash schreiben muss.

Grüße, pktm
http://www.intergastro-service.de (mein erstes CMS :) )
<< |< 1 2 >| >> 16 Einträge, 2 Seiten



View all threads created 2006-07-15 01:17.