2011-03-08 96 views
0

正则表达式确实什么,如果我运行这段代码: 输入载:“geeeeekdldn”没有任何反应

Regex.Replace(input, @"g(.|\n)*?n", string.Empty); 

正常输入的正则表达式的值为“”但是我还是后“geeeeekdldn” 有人可以帮我请

+0

如何制作控制台应用程序并测试正则表达式?我这样说是因为我有0个正则表达知识。 – Vercas 2011-03-08 12:29:48

回答

5

您需要将Replace的输出分配到一个新的字符串:

string output = Regex.Replace(input, @"g(.|\n)*?n", string.Empty); 

Replace不会更新输入字符串 - 请参阅MSDN documentation - 因为(正如Hans指出的),.NET字符串是不可变的,因此不能更改。所以任何操纵字符串的方法都必须返回一个新的字符串,而不是更新提供的字符串。

2

Regex.Replace函数其具有与作为其返回值所作的替换字符串。目前你正在抛弃这个返回值。你可能想

string processedInput = Regex.Replace(input, @"g(.|\n)*?n", string.Empty); 
+0

这是什么:@“g(。| \ n)*?n”是什么意思? – SamekaTV 2011-03-08 13:39:26

+0

@Massimo这是一个正则表达式(大致)会匹配:一个'g',后跟一个或多个字符(包括换行符),但匹配尽可能少,后跟一个'n'。 – AakashM 2011-03-08 16:08:15

1

除了所有的(正确的)答案:在.NET中的字符串类型是不可变的,这意味着一个字符串值,只能更换,不能改变。因此,对字符串起作用的所有函数总是会返回一个新的函数,而不是更改参数。