这是我的代码:
private static Regex paginationRegex = new Regex("<div class=\"pagination\">.*?<ul>(?<lis>.*?)</ul></div>",
RegexOptions.Singleline | RegexOptions.IgnoreCase);
static void Main(string[] args)
{
string output = File.ReadAllText("output.html");
var match = paginationRegex.Match(output);
var lis = match.Groups["lis"].Value;
}
这是我在output.html中的HTML
:
<div class="pagination">
<ul>
<li><a href="javascript:searchPage('1')" class="arrowDeactiveLeftFirst"> </a></li>
<li><a href="javascript:searchPage('1')" class="deActivateleftArrow"> </a></li>
<li>
<a class="current" href="javascript:searchPage('1')">1</a>
</li>
<li>
<a href="javascript:searchPage('2')">2</a>
</li>
<li>
<a href="javascript:searchPage('3')">3</a>
</li>
<li><a href="javascript:searchPage('2')" class="rightArrow"> </a></li>
<li><a href="javascript:searchPage('730')" class="arrowRightLast"> </a></li>
</ul>
</div>
但lis
组始终为空。我错过了什么?
答案 0 :(得分:1)
我认为这只是因为您没有考虑代码段末尾的</ul>
和</div>
之间的空格。允许两者之间的空格似乎解决了这个问题:
// \/
Regex paginationRegex = new Regex("<div class=\"pagination\">.*?<ul>(?<lis>.*?)</ul>\\s*</div>",
RegexOptions.IgnoreCase | RegexOptions.Singleline);
我还不得不提到正则表达式通常不是解析HTML的最佳工具。查看Html Agility Pack以获得一个非常适合解析HTML的好库。