![]() |
![]() |
|
![]() |
![]() |
|
Programmierung Rat & Tat für Programmierer |
![]() |
|
Themen-Optionen | Ansicht |
![]() |
#1 |
Veteran
![]() Registriert seit: 21.07.2001
Alter: 45
Beiträge: 404
|
![]() hi,
versuche gerade meine ersten schritte in perl und bin auf ein problem gestossen: ich will eine zeile die so ausschaut blablabla = "blablalbalba", in eine zeile umwandeln die so auschschaut blablabla = {blablabla}, hab dazu versucht mit s/.*=.*".*",/.*=.*{.*},/ zu ersetzen. er erkennt zwar die richtigen zeilen im file (also funktionert der erste teil - allerdings anstatt nur die anführungszeichen zu ersetzten schreibt er mir meine ersetzungsanweisung ins file, also .*= ... wo liegt hier mein denkfehler? ich hab nämlich gedacht, dass er .* einfach mit dem string ersetzt, den er vorfindet (also das blablabla) |
![]() |
![]() |
![]() |
#2 |
Inventar
![]() Registriert seit: 04.11.2001
Alter: 45
Beiträge: 2.150
|
![]() du musst referenzen mit runden klammern bilden
pattern = /\b(.*\=.*)\"(.*)\"\b/ replace = /\b\\1\{\\2\}\b/ HTH [e] ...aber ich habs net ausprobiert, also besserts mich bitte aus wenn was net stimmt, ausserdem arbeite ich ja nicht direkt mit perl sondern mit der pcre von php... |
![]() |
![]() |
![]() |
#3 |
Veteran
![]() Registriert seit: 21.07.2001
Alter: 45
Beiträge: 404
|
![]() hat wunderbar funktioniert - ich weiss nur nicht wozu du die ganzen backslasches drin hast ... -> egal
ich hab noch eine frage, kann ich im replacestring eigentlich so was schreiben: s/blablalba/$1\n\n/ ich meine jetzt die zeilenvorschübe, oder muss ich die irgendwie anders einbauen - ich bekommen nämlich so einen komischen compilerfehler wenn ich das mache |
![]() |
![]() |
![]() |
#4 |
Inventar
![]() Registriert seit: 04.11.2001
Alter: 45
Beiträge: 2.150
|
![]() du musst die newlines auch mit backslashes maskieren!
jetzt weisst du auch wieso ich soviele backslashes drin habe, ich maskier schon aus vorsich alles was nich in \d und \w drinnen ist (desimalzahlen und wort zeichen == [0-9a-zA-Z_]) s/blablalba/$1\n\n/ der darf nicht sein wenn du "/" als regexp-begrenzer hast,also maskieren, und \n auch maskieren: \\n was ist das "s" am anfang? HTH |
![]() |
![]() |
![]() |
#6 | |
Inventar
![]() Registriert seit: 04.11.2001
Alter: 45
Beiträge: 2.150
|
![]() Zitat:
was funkt denn an diesem replacement nicht? in php mit PCRE ist der replace-string wie ein normaler string nur halt mit referenzen... z.B.: "hallo $1 \n\n"; HTH |
|
![]() |
![]() |
![]() |
#7 |
Inventar
![]() Registriert seit: 24.09.2001
Beiträge: 7.335
|
![]() Code:
use strict; my $text = 'blablabla = "blablalbalba",'; $text =~ s/"(.*?)"/{$1}\n\n/gi; print "$text\n"; ============================ E:\TEMP>perl x.pl blablabla = {blablalbalba} , ============================
____________________________________
Weiterhin zu finden auf http://martin.leyrer.priv.at , http://twitter.com/leyrer , http://www.debattierclub.net/ , http://www.tratschen.at/ und via Instant Messaging auf Jabber: m3 <ät> cargal.org . |
![]() |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|