C# 类名称的正则表达式
我需要一个正则表达式字符串来获取页面中具有特定css类名的所有锚定标记,在c#/vb.net中 这就是我目前得到的C# 类名称的正则表达式,c#,html,regex,vb.net,C#,Html,Regex,Vb.net,我需要一个正则表达式字符串来获取页面中具有特定css类名的所有锚定标记,在c#/vb.net中 这就是我目前得到的 "<a.*?href=""(.*?)"".*?>(.*?)</a>" “” 但是我添加“class=name”的尝试不起作用,也可能找到类名出现在href前面或后面的链接,并且只有一个表达式 我对第三方html库很熟悉,但这对于我的想法来说是一种过分的技巧,webbrowser控件也是如此。我将通过两个步骤来实现这一点: 使用正则表达式查找所有锚定标记
"<a.*?href=""(.*?)"".*?>(.*?)</a>"
“”
但是我添加“class=name”的尝试不起作用,也可能找到类名出现在href前面或后面的链接,并且只有一个表达式
我对第三方html库很熟悉,但这对于我的想法来说是一种过分的技巧,webbrowser控件也是如此。我将通过两个步骤来实现这一点:
最好不要尝试用正则表达式解析html,而是使用XML库和xpath表达式
<a href="(.*?)" class="(.*?)">(.*?)</a>
如果选择第二个组,则应返回类名。我想这就是你想要的
编辑:重新阅读问题。。。如果要查找特定的类名,请将第二个(*.?)替换为所需的名称。例如,如果您在课后临时工,请执行以下操作:
<a href="(.*?)" class="temp">(.*?)</a>
然后选择第一组作为链接,或选择第二组作为链接文本
如果在C#中使用它,则需要对引号进行转义。以下内容在C#中适用
string regex=@”;
试试这个:
(?<1><a *?)(?<2>[^>]*?class=")(?<3>test)(?<4>"[^>]*?>)
工作的东西,如
<a class="test" href="http://www.google.com">Test</a>
编辑:提取url
如果要提取某个类的URL,需要使用2个表达式:
(?<1><a *?)(?<2>[^>]*?class="test"[^>]*? href=")(?<3>[^"]*?)(?<4>"[^>]*?>)
(?<1><a *?)(?<2>[^>]*?href=")(?<3>[^"]*?)(?<4>"[^>]*?class="test"[^>]*?>)
(?
第二个将匹配
<a href="http://www.google.com" class="test">Test</a>
将替换“MyClass”的“test”类,你能让它在这个问题上变得不正常吗?“onmouseover=”“randomjunk>测试我只需要提取url你需要提取某个类的url吗?我现在正在做”“它可以工作。我的解决方案不包含匹配项,因为我们确实不需要它。我们只对标记本身感兴趣。使用regex,我们将始终存在“嵌套”问题。如果匹配,我们将无法解析链接中的链接(这很愚蠢,但可能)。我觉得有义务包括答案。虽然您的目标更具体,但使用合适的html解析器可能会得到更准确的结果。不过html并不总是合适的xml
(?<1><a *?)(?<2>[^>]*?class="test"[^>]*? href=")(?<3>[^"]*?)(?<4>"[^>]*?>)
(?<1><a *?)(?<2>[^>]*?href=")(?<3>[^"]*?)(?<4>"[^>]*?class="test"[^>]*?>)
<a class="test" href="http://www.google.com">Test</a>
<a href="http://www.google.com" class="test">Test</a>