我正在从span的innerhtml中抓取一年的值,这个值在括号中如下:
<span class="year_type">(2009)</span><br>
我想获得没有括号的年份值,但在尝试转义“(”char。
时遇到编译错误我的模式:
const string yearPattern = "<span class=\"year_type\">\((?<year>.*?)\)</span>";
完整代码:
const string yearPattern = "<span class=\"year_type\">\((?<year>.*?)\)</span>";
var regex = new Regex(yearPattern, RegexOptions.Singleline | RegexOptions.IgnoreCase);
Match match = regex.Match(data);
return match.Groups["year"].Value;
逃避()
的最佳方式是什么由于
答案 0 :(得分:2)
使用两个斜杠。
const string yearPattern = "<span class=\"year_type\">\\((?<year>.*?)\\)</span>";
或@ literal字符串运算符
const string yearPattern = @"<span class=""year_type"">\(?<year>.*?)\)</span>";
请注意;在你原来的正则表达式中,你错过了一个开放式的paren。
答案 1 :(得分:1)
准备好用正则表达式解析HTML ...
话虽这么说,你只需要在你的模式定义前面@
(或者你的转义加倍\\
)。
const string yearPattern = @"<span class=""year_type"">\(?<year>.*?)\)</span>";
答案 2 :(得分:1)
我会考虑使用一个字符类,例如[(]
和[)]
,但使用双反斜杠,例如\\(
和\\)
(一个\
用于C#而另一个用于正则表达式)是相当重的语法。所以这是一个品味问题。