2010-11-29 5 views
1

Quelle serait l'expression regex à trouver (PoundSomenumberSemiColonPound) (aka #Number; #)? Je l'ai utilisé mais ne fonctionne pasregex.replace #number; #

string st = Regex.Replace(string1, @"(#([\d]);#)", string.Empty); 

Répondre

0

Vous n'avez pas besoin de classe de caractères lorsque vous utilisez \d, et comme SLaks l'indique, vous avez besoin de + pour faire correspondre un ou plusieurs chiffres. De plus, puisque vous n'êtes pas capturer tout ce que les parenthèses sont redondantes aussi, donc quelque chose comme ça devrait le faire

string st = Regex.Replace(string1, @"#\d+;#", string.Empty); 
+0

A travaillé comme charme. Merci –

+0

@Jamil: De rien. –

4

Vous recherchez #\d+;#.

  • \d correspond à un seul caractère numérique
  • + répond à un ou plusieurs des caractères précédents.
+0

Je travaille toujours pas Regex.Replace (string1, @ "(# ([\ d +]); #) ", string.Empty); –

+1

ne pas utiliser []. Vous avez besoin de Regex.Replace (string1, @ "# \ d +; #", string.Empty); –

+0

Ne pas utiliser les crochets (ou, au moins, mettre le '+' en dehors d'eux) – bdukes

0

Vous devrez peut-être échapper aux # symboles, ils sont généralement interprétés comme des marqueurs de commentaires, en plus de @SLaks commentaires sur l'utilisation de + pour permettre plusieurs chiffres

1
(\x23\d+\x3B\x32) 

# et / sont tous deux utilisés autour modèles, donc le problème. Essayez d'utiliser ce qui précède (habituellement quand je viens pour des problèmes avec des caractères spécifiques, je revenir à leur fac-similé hexagonal (asciitable.com a une bonne référence)

EDIT oublié de groupe pour le remplacement.

EDITv2 le ci-dessous travaillé pour moi:

String string1 = "sdlfkjsld#132;#sdfsdfsdf#1;#sdfsdfsf#34d;#sdfs"; 
String string2 = System.Text.RegularExpressions.Regex.Replace(string1, @"(\x23\d+\x3B\x23)", String.Empty); 
Console.WriteLine("from: {0}\r\n to: {1}", string1, string2);; 

sortie:

from: sdlfkjsld#132;#sdfsdfsdf#1;#sdfsdfsf#34d;#sdfs 
    to: sdlfkjsldsdfsdfsdfsdfsdfsf#34d;#sdfs 
Press any key to continue . . . 
+0

Regex.Replace (string1, @ "(\ x23 \ d + \ x3B \ x32)", string.Empty); Ne fonctionne pas. –

+0

s'il vous plaît voir mon post mis à jour, a bien fonctionné pour moi. (Vous attendez-vous à ce que le résultat soit placé dans string1 au lieu d'être retourné comme résultat de la fonction?) –

+0

Maintenant, ça marche. LOL. Je suppose que Gridview a son moment (s). Merci Brad .... –