regex.replace #number; # - PullRequest
       18

regex.replace #number; #

1 голос
/ 29 ноября 2010

Что бы найти выражение регулярного выражения (PoundSomenumberSemiColonPound) (он же #Number; #)? Я использовал это, но не работает

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

Ответы [ 4 ]

4 голосов
/ 29 ноября 2010

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

  • \d соответствует одному числовому символу
  • + соответствует одному или нескольким предыдущим символам.
1 голос
/ 29 ноября 2010
(\x23\d+\x3B\x32)

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

РЕДАКТИРОВАТЬ Забыл группу для замены.

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 . . .
0 голосов
/ 29 ноября 2010

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

string st = Regex.Replace(string1, @"#\d+;#", string.Empty);
0 голосов
/ 29 ноября 2010

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

...