PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Reguläre Ausdrücke: Zahl in Replace maskieren



NPC Fighter
09.06.2010, 20:26
Hi Leute,

ich komme mit einem regulären Ausdruck nicht zurecht... Vielleicht ist es ganz einfach, aber ich finde es einfach nicht.
Ich mache die Sache mal kurz:

Zu durchsuchender Text:

<bla>xyz</bla>
<tagName>10</tagName>
<foo>bar</foo>

Ausdruck:

(<tagName>)(..)(</tagName>)

Ersetzen will ich, was zwischen den Tags steht. Und zwar mit einer Zahl. Wenn ich jetzt aber zum Beispiel die 10 durch eine 20 ersetzen will, kann ich das ja nicht so schreiben:

$120$3

Die 20 werden ja jetzt (zu Recht) als Teil des ersten Blocks interpretiert (also Block $120).
Kann man das irgendwie maskieren?

Xardas der Dunkle
09.06.2010, 20:38
Für PHP habe ich direkt eine Lösung gefunden:
http://de2.php.net/manual/en/function.preg-replace.php (1ter Beispielcode).

Da PCRE könnte es auch in anderen Sprachen funktionieren.

Jesus_666
09.06.2010, 21:17
regular-expressions.info hat eine Tabelle. (http://www.regular-expressions.info/refreplace.html)

NPC Fighter
10.06.2010, 06:14
Ah, mit den {}-Brackets hat's geklappt.
Danke euch beiden!

Beispiel in .NET:

using System;
using System.Text.RegularExpressions;

// ...

Regex reg = new Regex(@"(<tagName>)(..)(</tagName>)");
string content = Functions.ReadFile(filePath);

content = reg.Replace(content, "${1}" + irgendeinWert + "${3}"));

Wolfsrudel
29.10.2010, 21:27
Ah, mit den {}-Brackets hat's geklappt.
Danke euch beiden!

Beispiel in .NET:

using System;
using System.Text.RegularExpressions;

// ...

Regex reg = new Regex(@"(<tagName>)(..)(</tagName>)");
string content = Functions.ReadFile(filePath);

content = reg.Replace(content, "${1}" + irgendeinWert + "${3}"));

Hehe, der Spaß hat mich im Bash-Scripting schon einmal fast um den Verstand gebraucht. Curly Brackets to the Rescue! :)