2009-10-29 6 views
1

J'ai une chaîne à analyser. Le problème est que certaines parties de la chaîne ne sont pas toujours les mêmes.Parse string avec regex

a3: S8: [gmpage] S17: Head GM NecrocideS12: Test [15158]

Les 18 premiers caractères sont toujours les mêmes, de sorte que ceux-ci peuvent i String.Substring() avec facilité.

Mon problème est que les personnages ne S12: est toujours S12:, il pourrait facilement être S26: - donc je ne peux pas utiliser un String.Replace() simple sur elle. Je dois remplacer ces 3 caractères à : 

Comment puis-je faire cela avec regex? Je vous remercie.

+0

Par S12, S17 voulez-vous dire? – Mercurybullet

+0

Non il y a quelque chose dans la ligne NecrocideS12: test :-) – janhartmann

+0

Oups, manqué le S12 à la fin de Necrocide en raison de la coloration – Mercurybullet

Répondre

3

Essayez ceci:

string input = "a3:S8:[gmpage]S17:Head GM NecrocideS12:test [15158]"; 
string output = Regex.Replace(myString, "NecrocideS\d\d:", "Necrocide:"); 
0

Que diriez-vous:

Regex reg = new Regex(@"\A(?<before>a3:S8:\[gmpage\])(?<delete>.{3})(?<after>:Head GM NecrocideS12:test \[15158\])\Z"); 
string input = @"a3:S8:[gmpage]S26:Head GM NecrocideS12:test [15158]"; 
string output = reg.Replace(input, "${before}${after}"); 

Cela remplacera S26 par ""