在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);
它不会删除字符串。但是,当我在没有任何回车的字符串上运行此代码时,它确实有效。
所以我要找的是一个匹配任何字符的正则表达式,无论它是否是控制代码或常规字符。
答案 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);