正则表达式 [英] Regex Expression

查看:94
本文介绍了正则表达式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

你好程序员,我希望你帮我把这个html转换成正则表达式..我已经尝试了一个星期了,但仍然没有做对。请帮帮我。我所做的解决方案如下:

Hello Programmers, please i want you to help me with converting this html into regex.. i have been trying for like a week now and still haven't got it right. please help me out. The solution i made is found below.

HTML

< a class =" BBclass"数据sessionlink = QUOT; TTTTTT" title =" one big title"的rel =" BBB" href =" https://www.mysite.com">



    < span class =" title" dir =" ltr">零大< / span>

    < span id =" description-id-514677" class =" msd">一个大< / span>

    < span class =" nvb">两个大< / span>

    < span class =" bcv"> third big< / span>



< / a>

<a class="BBclass" data-sessionlink="tttttt" title="one big title" rel="bbb" href="https://www.mysite.com">

    <span class="title" dir="ltr">zero big</span>
    <span id="description-id-514677" class="msd">one big</span>
    <span class="nvb">two big</span>
    <span class="bcv">third big</span>

</a>

我的代码

   昏暗span_match作为新的正则表达式(QUOT;<一个[^<>] *类= QUOT;" BBclass"" [^<>] * HREF ="?"(小于?LINK> ; [^""]。*?)"" [^<>] *> \ s"& _

      ;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP ;&NBSP;"<跨度[^<>] *类= QUOT;"标题"" [^>] *>?(?< TITLE> *?)< /跨度> ; \s"
&安培; _

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; &NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;"< span\s + ID = QUOT;"描述-ID - ([0-9])"" \s +类= QUOT;" MSD"" [^<>] * GT;< /跨度>(小于;记述> *??) ; \s"
& _

           &nb属;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; "<跨度[^<>] *类= QUOT;" NVB"" [^<>] *>(小于?上传器> *?)< /跨度> \ S"
& _

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP ;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; "<跨度[^<>] *类= QUOT;" BCV"" [^<>] *>(小于?观察者GT; *?)< /跨度> \ S"
& _

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP ;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; "< / a>")

    Dim span_match As New Regex("<a[^<>]*class=""BBclass""[^<>].*?href=""(?<liNK>[^""].*?)""[^<>]*>\s" & _
                                "<span[^<>]*class=""title""[^>].*?>(?<titLE>.*?)</span>\s" & _
                                "<span\s+id=""description-id-([0-9])""\s+class=""msd""[^<>]*>(?<descrip>.*?)</span>\s" & _
                                "<span[^<>]*class=""nvb""[^<>]*>(?<upLOADer>.*?)</span>\s" & _
                                "<span[^<>]*class=""bcv""[^<>]*>(?<viEWER>.*?)</span>\s" & _
                                "</a>")

  Private Sub Button1_Click(发件人为对象,e为EventArgs)处理Button1.Click

         Dim匹配As MatchCollection = span_match.Matches(Me.TextBox1.Text,RegexOptions.Multiline)

       对于每个m匹配比赛

            Dim lvi As New ListViewItem

            lvi.Text =(m.Groups(" titLE")。Value)

            'lvi.SubItems.Add(View_numbr& vbCrLf)

            'lvi.SubItems.Add(& vbCrLf)

            lvi.SubItems.Add(m.Groups(&]连结")值及安培; vbCrLf)

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP ; lvi.SubItems.Add(m.Groups(QUOT;记述")值及安培; vbCrLf)

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP ; lvi.SubItems.Add(m.Groups(QUOT;上传器")值及安培; vbCrLf)

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP ; lvi.SubItems.Add(m.Groups(QUOT;观众QUOT)值及安培; vbCrLf)

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP ; ListView1.Items.Add(lvi)

       下一步 

  Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
         Dim matches As MatchCollection = span_match.Matches(Me.TextBox1.Text, RegexOptions.Multiline)
        For Each m As Match In matches
            Dim lvi As New ListViewItem
            lvi.Text = (m.Groups("titLE").Value)
            'lvi.SubItems.Add(View_numbr & vbCrLf)
            ' lvi.SubItems.Add( & vbCrLf)
            lvi.SubItems.Add(m.Groups("liNK").Value & vbCrLf)
            lvi.SubItems.Add(m.Groups("descrip").Value & vbCrLf)
            lvi.SubItems.Add(m.Groups("upLOADer").Value & vbCrLf)
            lvi.SubItems.Add(m.Groups("viEWER").Value & vbCrLf)
            ListView1.Items.Add(lvi)
        Next 

结束子

但它不起作用...请帮我写正则表达式,以便让它工作正常。

But it is not working... please, help me to write the regex so as to make it work please.

感谢您理解伟大的程序员。

Thanks for your understanding Great programmers.

推荐答案

使用正则表达式非常类似于强制它,最好解析为XML,然后简单地提取所需的元素/属性,如下所示:

Using a regex is really like bruteforcing it, it would be better to parse to XML and then simply extract the Elements/Attributes you want as follows:

Private Function ExtractAttributes(html As String) As Dictionary(Of String, String)
    Dim result = New Dictionary(Of String, String)
    Dim parsedHtml = XElement.Parse(html)
    Try
      result.Add("Title", parsedHtml.Elements("span").Where(Function(span) span.Attribute("class").Value.Equals("title")).FirstOrDefault().Value)
      'Add all other elements/attributes you want
    Catch ex As Exception

    End Try
    Return result
  End Function





这篇关于正则表达式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆