正则表达式 - 查找第n次出现 - 网页查看源数据

时间:2018-05-14 13:48:42

标签: c# html .net regex

我有以下内容: (?<=>)(\w*)(?=<)

它抓取两个尖括号><内所有出现的单词。

但是我只想抢第三次。 我在上面的正则表达式中尝试了几次{2}的迭代(作为第三次),但到目前为止还没有任何效果。任何想法都会有所帮助

1 个答案:

答案 0 :(得分:0)

如果您使用零宽度断言,例如向前看或向后看,那么您将永远不会跳过n个项目。你必须吃#34;字符,以便处理不包括用于上一场比赛的字符。

下面的表达应该可以解决问题。它匹配两个紧密支架的实例,而不是紧密支架,紧密支架与第三个紧密支架匹配,而不是紧密支架,紧密支架。要获取括号内的内容,请使用Match.GroupsGroupCollection.Captures

var re = new Regex(@"(?:(?:>[^<]+<.*?){2}>)([^<]+)(?:)");
var matches = re.Matches(@"<a>1</a><b>2</b><a>3</a><b>4</b><e>5</e><a>6</a>");
foreach (Match match in matches) {
    Console.WriteLine(match.Groups[1].Captures[0]);
}
// output:
// 3
// 6

是的,这将是一个非常糟糕的HTML解析器,但对于快速而肮脏的黑客来说很好。

相关问题