Schrift
[thread]8997[/thread]

Regex



<< >> 3 Einträge, 1 Seite
weismat
 2007-05-11 21:37
#76651 #76651
User since
2003-08-18
142 Artikel
BenutzerIn
[default_avatar]
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?
PerlProfi
 2007-05-11 22:25
#76652 #76652
User since
2006-11-29
340 Artikel
BenutzerIn
[default_avatar]
Was heißt zwischen einer Pipe oder einer schließenden Klammer ?
Probier mal folgendes:
Code: (dl )
$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-->
benjo
 2007-05-12 17:28
#76653 #76653
User since
2007-05-12
13 Artikel
BenutzerIn
[default_avatar]
[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-->
<< >> 3 Einträge, 1 Seite



View all threads created 2007-05-11 21:37.