User since
2003-08-18
142
Artikel
BenutzerIn
Ich möchte gerne in einer regulären Ausdruck immer das erste Gleichheitszeichen zwischen einem Pipe oder einer geschlossen Klammer in ein Komma umwandeln.
Beispiel
TEST=TEST2=TEST 3| TEST1=TEST2
soll
TEST,TEST2=TEST 3| TEST1,TEST2
oder
TEST=TEST2=TEST 3}| TEST1=TEST2
soll
TEST,TEST2=TEST 3}| TEST1,TEST2 werden.
Kann ich das in einem regulären Ausdruck machen oder muss ich etwas Komplizierteres machen?
User since
2006-11-29
340
Artikel
BenutzerIn
Was heißt zwischen einer Pipe oder einer schließenden Klammer ?
Probier mal folgendes:
$data =~ s/(^|[\|\}])(.+?)=/$1$2,/g;
Das ersetzt jedes = nach einer Pipe, einer schließenden Klammer, oder dem Stringanfang durch ein Kommata.
MfG
edit: Sollte natürlich Kommata, nicht Leerzeichen heißen.\n\n
<!--EDIT|PerlProfi|1178992974-->
User since
2007-05-12
13
Artikel
BenutzerIn
[quote=weismat,11.05.2007, 19:37]Beispiel
TEST=TEST2=TEST 3| TEST1=TEST2
soll
TEST,TEST2=TEST 3| TEST1,TEST2[/quote]
Was ist "Test" ?, ein Wort, Zahlen, mit/ohne Sonderzeichen unterscheiden die sich mit Test1, wenn ja nur an einer Ziffer oder genzlich ?
Sons erstmal mit diesem Ausdruck suchen:
"\|?\{?\s*TEST="
und mit "TEST," ersetzen
und dann nochmal mit
"\|\s+TEST.." suchen und dann mit "TEST1," ersetzen
worauf ich hinaus will ich muss ein genaues Suchmuster erkennen
um dann auch ein Allgemeingültiges Ausdruck zu verwenden.
gruss benjo\n\n
<!--EDIT|benjo|1178977308-->