2011-04-27 74 views
28

在C#中,我寫了以下字符串,字符串變量,回車和所有:C#正則表達式匹配任何字符?

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); 

它不會刪除字符串。但是,當我在沒有任何回車的字符串上運行此代碼時,它確實有效。

所以我在找的是一個匹配任何字符的正則表達式,無論它是否是控制代碼或常規字符。

回答

47

你忘了指定的正則表達式時(具體而言,在.運營商)應符合所有字符(不是所有的字符除了 \ N):

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

你需要添加所有爲RegexOptions.Singleline

+1

喀拉!你是對的!當stackoverflow允許= P時,我會在10分鐘內將答案標記爲答案。 – oscilatingcretin 2011-04-27 19:17:39

10

使用單行模式:

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