Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 类名称的正则表达式_C#_Html_Regex_Vb.net - Fatal编程技术网

C# 类名称的正则表达式

C# 类名称的正则表达式,c#,html,regex,vb.net,C#,Html,Regex,Vb.net,我需要一个正则表达式字符串来获取页面中具有特定css类名的所有锚定标记,在c#/vb.net中 这就是我目前得到的 "<a.*?href=""(.*?)"".*?>(.*?)</a>" “” 但是我添加“class=name”的尝试不起作用,也可能找到类名出现在href前面或后面的链接,并且只有一个表达式 我对第三方html库很熟悉,但这对于我的想法来说是一种过分的技巧,webbrowser控件也是如此。我将通过两个步骤来实现这一点: 使用正则表达式查找所有锚定标记

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

这就是我目前得到的

"<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>