求助 vb.net 正则表达式 取 html代码中的A标签的 href 链接

时间:2022-11-11 15:39:32
 r = New Regex("(?<=<a.*?href\s*=\s*"")(?<1>[^""]*)(?=""|(?<1>\S+))", RegexOptions.IgnoreCase Or RegexOptions.Compiled)
       

本人从网上 搜了 一个 好像 个别样式的 识别不出来! 不太同用 html代码 格式台宽松…… 请高手赐教

<a href="page.asp?v=1&d=2" >abc</a>
<a href=page.asp?v=1&d=2' >abc</a>
<a href=page.asp?v=1&d=2 >abc</a>
<a class="ddd" href="page.asp?v=1&d=2" >abc</a>

10 个解决方案

#1


(?is)<a.*?href=[""'](?<href>[^""']+)[^>]+>(?<txt>.*?)</a>

#2


(?is)<a[^>]*?href=["']?([^"']*?)["']?[^>]*?>.*?</a>

#3


可能是我描述不够精确 谢谢楼上的恢复

匹配 A标签中 链接 只提取  超链接

#4


(?is)<a[^>]*?href=[""']?([^""']+)[""']?[^>]*?>.*?</a>
 r = New Regex("(?is)<a[^>]*?href=[""']?([^""']+)[""']?[^>]*?>(.*?)</a>", RegexOptions.IgnoreCase Or RegexOptions.Compiled);

href取Groups[1].Value
text取Groups[2].Value

#5


<a[^<>]+href[\s]*\=[\s]*["']([^"']+)["']

要考虑各种不规则情况 ,我这里假定 肯定有单双引号盖住

#6


New Regex("<a[^<>]+href[\\s]*\\=[\\s]*[\"']([^\"']+)[\"']"

#7


4F

请问怎么用 小弟太菜了


 Public Sub saveAUrl(ByVal Str As String)
        Dim r As Regex
        Dim m As Match
         r = New Regex("(?<=<a.*?href\s*=\s*"")(?<1>[^""]*)(?=""|(?<1>\S+))", RegexOptions.IgnoreCase Or RegexOptions.Compiled)
        m = r.Match(Str)
        While m.Success
                MessageBox.Show(m.Value)
                m = m.NextMatch()
        End While
    End Sub

#8


 MessageBox.Show(m.Groups[1].Value)

#9


MsgBox(m.Groups[1].Value)
你这到底是C#还是VB

#10


vb  vb

#1


(?is)<a.*?href=[""'](?<href>[^""']+)[^>]+>(?<txt>.*?)</a>

#2


(?is)<a[^>]*?href=["']?([^"']*?)["']?[^>]*?>.*?</a>

#3


可能是我描述不够精确 谢谢楼上的恢复

匹配 A标签中 链接 只提取  超链接

#4


(?is)<a[^>]*?href=[""']?([^""']+)[""']?[^>]*?>.*?</a>
 r = New Regex("(?is)<a[^>]*?href=[""']?([^""']+)[""']?[^>]*?>(.*?)</a>", RegexOptions.IgnoreCase Or RegexOptions.Compiled);

href取Groups[1].Value
text取Groups[2].Value

#5


<a[^<>]+href[\s]*\=[\s]*["']([^"']+)["']

要考虑各种不规则情况 ,我这里假定 肯定有单双引号盖住

#6


New Regex("<a[^<>]+href[\\s]*\\=[\\s]*[\"']([^\"']+)[\"']"

#7


4F

请问怎么用 小弟太菜了


 Public Sub saveAUrl(ByVal Str As String)
        Dim r As Regex
        Dim m As Match
         r = New Regex("(?<=<a.*?href\s*=\s*"")(?<1>[^""]*)(?=""|(?<1>\S+))", RegexOptions.IgnoreCase Or RegexOptions.Compiled)
        m = r.Match(Str)
        While m.Success
                MessageBox.Show(m.Value)
                m = m.NextMatch()
        End While
    End Sub

#8


 MessageBox.Show(m.Groups[1].Value)

#9


MsgBox(m.Groups[1].Value)
你这到底是C#还是VB

#10


vb  vb