C#正则表达式匹配任何字符?

时间:2011-04-27 19:11:53

标签: c# regex

在C#中,我将以下字符串写入字符串变量,回车符和all:

asdfasdfasdf
asdfas<test>asdfasdf

asdfasdf<test>asdfasdf

在Notepad2中,我使用这个正则表达式:

<test>.*<test>

按预期选择此文本:

<test>asdfasdf

asdfasdf<test>

但是,当我在C#中执行此操作时:

System.Text.RegularExpressions.Regex.Replace(s, "<test>.*<test>", string.Empty);

它不会删除字符串。但是,当我在没有任何回车的字符串上运行此代码时,它确实有效。

所以我要找的是一个匹配任何字符的正则表达式,无论它是否是控制代码或常规字符。

3 个答案:

答案 0 :(得分:53)

您忘了指定正则表达式操作(特别是.运算符)应与所有字符匹配(并非所有字符 \ n):< / p>

System.Text.RegularExpressions.Regex.Replace(s, "<test>.*<test>", string.Empty, RegexOptions.Singleline);

您需要添加的只是RegexOptions.Singleline

答案 1 :(得分:11)

使用单行模式:

Regex.Replace(s, "<test>.*<test>", "", RegexOptions.Singleline);

答案 2 :(得分:0)

您可以删除字符串中的回车符,然后进行匹配:

s = s.Replace(Environment.NewLine, "");

然后它将按预期工作:

System.Text.RegularExpressions.Regex.Replace(s, "<test>.*<test>", string.Empty);