【发布时间】:2010-11-29 17:46:11
【问题描述】:
要查找的正则表达式是什么 (PoundSomenumberSemiColonPound)(又名 #Number;#)?我用过这个,但不工作
string st = Regex.Replace(string1, @"(#([\d]);#)", string.Empty);
【问题讨论】:
要查找的正则表达式是什么 (PoundSomenumberSemiColonPound)(又名 #Number;#)?我用过这个,但不工作
string st = Regex.Replace(string1, @"(#([\d]);#)", string.Empty);
【问题讨论】:
您正在寻找#\d+;#。
\d 匹配单个数字字符+ 匹配前面的一个或多个字符。【讨论】:
+ 放在它们之外)
(\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 . . .
【讨论】:
#\d+;# 这样稍微健全的正则表达式也可以解决问题。这不是 Perl,所以不需要 # 和 /。所以没有必要使用字符代码。
使用\d 时不需要字符类,正如 SLaks 指出的那样,您需要+ 来匹配一个或多个数字。此外,由于您没有捕获任何内容,因此括号也是多余的,所以应该这样做
string st = Regex.Replace(string1, @"#\d+;#", string.Empty);
【讨论】:
您可能需要转义 # 符号,它们通常被解释为注释标记,除了 @SLaks 关于使用 + 允许多个数字的注释
【讨论】: