正则表达式获取github存储库的许可文件

时间:2017-11-09 15:04:47

标签: c# regex non-greedy

HTML中的任何githup-repository页面,我尝试获取License的路径。

目前我得到了这个:

<a\shref=\"((.*?LICENSE|.*?license)|(.*?LICENSE.+?|.*?License.+?))\">
  

结果:

MATCH:

 73f79efa40f6bdde431853ce5ff000b9fe0b1fe5" itemprop="license" title="License.txt - <a href="/aspnet/EntityFramework6/blob/master/License.txt" class="js-navigation-open" id="dc5cde275269b574b34b1204b9221cb2-73f79efa40f6bdde431853ce5ff000b9fe0b1fe5" itemprop="license" title="License.txt">

GROUP:

/aspnet/EntityFramework6/blob/master/License.txt" class="js-navigation-open" id="dc5cde275269b574b34b1204b9221cb2

我想要的只是:

"/aspnet/EntityFramework6/blob/master/License.txt"

我的错误在哪里?

  

备注:

我想要匹配:

  • LICENSE.TXT
  • 的License.txt
  • 许可证
  • LICENSE
  • License.any
  • LICENSE.any

1 个答案:

答案 0 :(得分:0)

你没有考虑你的正则表达式中的文件扩展名,你也不应该包括&#39;&gt;&#39;最后因为链接和标签关闭之间还有很多其他属性。

如果我们使用RegexOptions.IgnoreCase

,也可以简化正则表达式
var match = Regex.Match(text, "<a\\shref=\"(.+?license(?:\\..+?)?)\"", RegexOptions.IgnoreCase);
if (match.Success)
{
    var link = match.Groups[1].ToString();
}