Thread backreferences und '\n' (14 answers)
Opened by snarf at 2006-03-29 15:15

sid burn
 2006-03-31 21:09
#64179 #64179
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
[quote=snarf,31.Mar..2006, 09:02]Tja ... und da "verteidige" ich fleißig die von mir gewählte Vorgehensweise und merke dennoch schon, daß sich Taulmarills (und Deine) Regex bei mir im Kopf festgesetzt hat ...[/quote]
Mal eine andere Frage, eigentlich kann deine erste Regex doch gar nicht richtig Funktioniert haben?

Code: (dl )
s/ ( { .+ } ) /{$1}}/gsx;


Wenn du diese Regex anwendest, dann wird nur das allerste { und das allerletzte } verdoppelt. Alles was dazwischen ist wird nicht beachtet.

Was eigentlich auch logisch ist, das ".+" frist alles bis zum EOF auf, geht zurück zum letzten "}" dort matcht die regex, es findet eine Ersetzung statt. Danach geht die Regex NACH dem gematchten text weiter. Also alle öffnenden und schließenden Klammern zwischen den beiden Zeichen werden nicht beachtet.

Eine while Schleife kannst du aber auch nicht auf die Variable angewendet haben, weil das dann eine Endlosschleife wäre. Wie hast du es genau hinbekommen das deine Regex das gewünschte macht? ^^

Wenn du keinen Nicht Gierigen Quantor genommen hast, oder die ganze Datei in einer variable drin stand, dann kann das gar nicht Funktioniert haben.

Hier mal folgendes Programm mit deiner Regex was ich auf das Programm selber anwende.

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
$ ./klam.pl klam.pl
#!/usr/bin/perl -w

while (<>)
{{
$text .= $_;
}
$_ = $text;

s/ ( { .+ } )/{$1}}/gsx;
print;

Wie man sieht wird nur das erste und letzte zeichen verdoppelt.



Quote
Nein, nicht wirklich. Ich gehöre ebenfalls zu der Fraktion der "lieber einmal zu ausführlich als zu kurz" - Erklärer, von daher sind Deine Ausführungen für alle Fremdleser sicherlich herzlichst willkommen! Und in diesem Falle natürlich auch für mich zur "Auffrischung" ...

Ja, ich erkläre und Begründe immer gerne meine Antworten, und dass auch ausführlich. Wird aber nicht immer gut angesehen, meistens auch mehr als "klugscheißerei". Was ich aber so natürlich nicht meine Absicht ist.\n\n

<!--EDIT|sid burn|1143825917-->
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de

View full thread backreferences und '\n'