类名的正则表达式

时间:2011-01-15 12:39:53

标签: c# html regex vb.net

我需要一个正则表达式字符串来获取具有特定css类名的页面中的所有锚标记,在c#/ vb.net中

这是我到目前为止所得到的

"<a.*?href=""(.*?)"".*?>(.*?)</a>"

但是我添加“class = name”的尝试不起作用,也可以在href之前或之后用一个表达式查找类名出现的链接吗?

我熟悉第三方html库,但这对我的想法来说太过分了,web浏览器控件也是如此。

4 个答案:

答案 0 :(得分:0)

我会分两步完成:

  1. 找到带有正则表达式的所有锚标签
  2. 过滤掉所有类名不正确的内容。

答案 1 :(得分:0)

最好不要尝试用正则表达式解析html,但是使用XML库并使用xpath表达式

答案 2 :(得分:0)

<a href="(.*?)" class="(.*?)">(.*?)</a>

如果您选择第二组,那么应该返回类名。我假设你正在追求的是什么。

编辑:重新阅读问题...如果您正在使用特定的班级名称,请将第二个(*。?)替换为您想要的名称。例如。如果你是课后的,请做:

<a href="(.*?)" class="temp">(.*?)</a>

然后取第一组作为链接,或第二组作为链接文本。

如果您在C#中使用它,则需要转义引号。以下内容适用于C#。

string regex = @"<a href=""(.*?)"" class=""temp"">(.*?)</a>";

答案 3 :(得分:0)

试试这个:

(?<1><a *?)(?<2>[^>]*?class=")(?<3>test)(?<4>"[^>]*?>)

并替换为

$1$2MyClass$4

适用于类似的东西;

<a class="test" href="http://www.google.com">Test</a>

修改:提取网址

如果要提取某个类的URL,则需要使用2个表达式:

(?<1><a *?)(?<2>[^>]*?class="test"[^>]*? href=")(?<3>[^"]*?)(?<4>"[^>]*?>)

(?<1><a *?)(?<2>[^>]*?href=")(?<3>[^"]*?)(?<4>"[^>]*?class="test"[^>]*?>)

网址位于 3 组。

第一个匹配:

<a class="test" href="http://www.google.com">Test</a>

第二个匹配

<a href="http://www.google.com" class="test">Test</a>