2013-08-06 404 views
2

我想從一個字符串獲取字符串Regex解析字符串從字符串的正則表達式

Regex regex = new Regex(".signature=(.*)(", RegexOptions.Singleline); 
var v = regex.Match(html); 
string funcName = v.Groups[1].Value; 

這是一個HTML字符串:

c&&(b.signature=hj(c)); 

,我希望得到hj,和當我運行它我得到這個exception

parsing ".signature=(.*)(" - Not enough)'s. 

回答

6

你必須逃避特殊字符。使用這樣的:

Regex regex = new Regex(@"\.signature=(.*)\(", RegexOptions.Singleline); 
var v = regex.Match(html); 
string funcName = v.Result("$1"); 

你可以找到關於這裏的正則表達式轉義特殊字符(2段)一個很好的解釋:http://www.regular-expressions.info/characters.html

編輯:

如果你搜索這個特殊功能在整個html頁面,你就會有問題,那是因爲.*是貪婪的,這意味着它試圖獲得高達possbile(看到這裏一個很好的解釋:http://www.regular-expressions.info/repeat.html(第3款))

一個更好的方式是:

Regex regex = new Regex(@"\.signature=([^\(]+)\(", RegexOptions.Singleline); 
var v = regex.Match(html); 
string funcName = v.Result("$1"); 

[^\(]+搜索至少1個字符的無(的字符串。這將在整個HTML頁面上工作

+0

@GrantThomas學習編程語言,你應該知道 – x4rf41

+0

什麼時候_learning_一種語言?什麼時候語言混合? –

+5

@GrantThomas請寫出一個解釋所有事情的答案,我會放棄它。但我不會解釋任何人(甚至在學習編程時)都可以在簡單的谷歌搜索中找到,可能很好解釋 – x4rf41