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.
4

1 回答 1

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 页面

于 2013-08-06T13:51:02.060 回答