2013-01-22 17 views
1

我遇到了C#中正則表達式的問題。 我有一個代表頁面的字符串(HTML等)。該字符串還包含\ r \ n \ r和\ n在不同的地方,現在我想在字符串中匹配的東西:帶換行符返回正則表達式C#

Match currentMatch = Regex.Match(contents, "Title: <strong>(.*?)</strong>"); 
string org = currentMatch.Groups[1].ToString(); 

這工作得很好,但是,當我想匹配的東西,有任何字符串中較早(換行符)中提到的人物,它不返回任何東西(空的,沒有匹配):

Match currentMatch = Regex.Match(contents, "Description: <p>(.*?)</p>"); 
string org = currentMatch.Groups[1].ToString(); 

如果我添加了比賽上面以下行但它確實工作:

contents = contents.Replace("\r", " "); 
contents = contents.Replace("\n", " "); 

然而,我不喜歡它修改來源,我能做些什麼呢?

回答

1

.默認情況下不匹配換行符。您可以使用Regex OptionSingleline來更改此設置。這將整個輸入字符串視爲一行,即點也匹配換行符。

Match currentMatch = Regex.Match(contents, "Title: <strong>(.*?)</strong>", RegexOptions.Singleline); 

順便說一下,我希望你知道,正則表達式通常不是處理Html的方式嗎?

+0

你好,非常感謝。有什麼更好的方式來處理HTML?我一直使用其他語言的Regular Expressions。謝謝 –

+0

使用HTML解析器,請參閱以下問題:[在C#中解析HTML的最佳方式是什麼?](http://stackoverflow.com/questions/56107/what-is-the-best-way-to -parse-HTML-在-c)的 – stema