我需要一个正则表达式字符串来获取具有特定css类名的页面中的所有锚标记,在c#/ vb.net中
这是我到目前为止所得到的
"<a.*?href=""(.*?)"".*?>(.*?)</a>"
但是我添加“class = name”的尝试不起作用,也可以在href之前或之后用一个表达式查找类名出现的链接吗?
我熟悉第三方html库,但这对我的想法来说太过分了,web浏览器控件也是如此。
答案 0 :(得分:0)
我会分两步完成:
答案 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>