用正则表达式替换反斜杠

时间:2014-05-12 13:35:33

标签: c# regex

我有这个字符串

string s = "<textarea>\r\n</textarea>";

我想动态替换textarea内容,尝试这样:

Regex regex = new Regex("(<textarea.*?>)(.*)(</textarea>)");
string a = regex.Replace(s, "$1new value$3");

然而,这并没有对我想要的输出进行处理,它应该是:<textarea>new value</textarea>。它只是产生

<textarea>
</textarea>

我该如何解决?

2 个答案:

答案 0 :(得分:5)

使用RegexOptions.SingleLine模式。否则.与换行符不匹配。

根据文件:

  

单线指定单线模式。改变点的含义   (。)所以它匹配每个字符(而不是每个字符除外)   \ n)的

答案 1 :(得分:3)

.*会在遇到\n时停止。

因此请使用RegexOptions.MultiLine选项。

或者只是将你的正则表达式更改为:

(?m)(<textarea.*?>)(.*)(</textarea>)

(?m)是内联多行修饰符。

编辑:

抱歉它应该是RegexOptions.SingleLine。我很困惑,因为我只在javascript中使用正则表达式。