2010-11-29 3 views
1

Каким будет выражение в регулярном выражении (PoundSomenumberSemiColonPound) (aka #Number; #)? Я использовал это, но не работалregex.replace #number; #

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

ответ

0

Вам не нужен класс символов при использовании \d, и, как указывает SLaks, вам нужно + для соответствия одной или нескольким цифрам. Кроме того, поскольку вы ничего не захватывая круглые скобки избыточны тоже, так что-то вроде этого следует сделать это

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

Вы ищете #\d+;#.

  • \d соответствует одной цифровому символу
  • + соответствует одному или более из предшествующих символов.
+0

До сих пор не работает Regex.Replace (string1, @ "(# ([\ d +]); #) ", string.Empty); – 2010-11-29 17:50:38

+1

не использовать []. Вам нужно Regex.Replace (string1, @ "# \ d +; #", string.Empty); – 2010-11-29 17:53:32

+0

Не используйте квадратные скобки (или, по крайней мере, помещайте `+` из них) – bdukes 2010-11-29 17:53:45

0

Вам может понадобиться, чтобы избежать # символов, они обычно интерпретируются как маркеры комментария, в дополнении к @SLaks комментарию об использовании + разрешить несколько цифр

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

# и / оба используются вокруг шаблонов, таким образом, проблема. Попробуйте использовать выше (обычно, когда я прихожу к неприятностям с конкретными персонажами, я возвращаюсь к шестигранному факсимиле (asciitable.com имеет хорошую ссылку)

EDIT Забыли группы для замены.

EDITv2 ниже работал для меня:

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);; 

Выход:

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