Regex group empty
本文关键字:empty group Regex | 更新日期: 2023-09-27 18:03:24
这是我的代码:
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;
}
这是我的HTML
在output。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
组总是空的。我错过了什么?
我认为这只是因为您没有考虑到代码片段末尾的</ul>
和</div>
之间的空间。允许空格在两者之间似乎解决了这个问题:
// '/
Regex paginationRegex = new Regex("<div class='"pagination'">.*?<ul>(?<lis>.*?)</ul>''s*</div>",
RegexOptions.IgnoreCase | RegexOptions.Singleline);
我还不得不提到,正则表达式通常不是解析HTML的最佳工具。Html Agility Pack是一个很好的解析Html的库。