使用Regex从字符串中解析字符串

时间:2013-08-06 13:49:23

标签: c# .net

我想从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.

1 个答案:

答案 0 :(得分: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页面中搜索这个特定的函数,你会遇到问题,因为.*是贪婪的,这意味着它试图获得尽可能多的东西(在这里看到一个很好的解释) :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页面