内容是这样的:
<a href=a.html?111 target=_blank>这里有汉字,汉字的标点,还有英文以及英文的标点</a><a href=a.html?112 target=_blank>这里有汉字,汉字的标点,还有英文以及英文的标点</a><a href=a.html?118 target=_blank>这里有汉字,汉字的标点,还有英文以及英文的标点</a><a href=a.html?115 target=_blank>这里有汉字,汉字的标点,还有英文以及英文的标点</a>这上面一共有4条数据。我想取出这三条中的红色部分。即:a.html?111 和 第一条的标题
a.html?112 和 第二条的标题
a.html?118 和 第三条的标题
a.html?115 和 第四条的标题取了半天,取错了。
麻烦大家指点一下。多谢了。

解决方案 »

  1.   

    先replace(html, "</a>","</a>" & vbcrlf)
    <a\shref\075a.*\starget\075_blank>.*</a>感觉是bug。
      

  2.   

    谢谢楼上几位的回复。
    3楼朋友,我还要取出链接的标题,也就是红色的部分。
    2楼朋友,用replace将他们换行,这样取应该是可行的。不过如果不动原文,是不是比较难取了?
    1楼朋友,我的意思就是,用正则把那一段文本,提取出链接和链接标题。谢谢。
      

  3.   


    嗯?好像我还是没说清楚?
    比如这样说吧。
    我用了这样一个正则表达式:
    <a href=(detail.htm\?[0-9]+) target=_blank>([\u4e00-\u9fa5]+)</a>
    这样,只能取到链接标题是汉字的那些。如果标题里带有标点,就取不到了。
    而如果把([\u4e00-\u9fa5]+)换成(.*),因为需要取的这4条数据没有换行,所以就一下全取出来了。变成一条了。我刚才用了replace强制添加了一个换行,成功了。
    但是如果不强制换行,不改变原有的内容,用正则有没有什么办法取出来。
      

  4.   

    估计是VBS正则库的BUG,如果真的这样,就没办法了。别钻牛角尖了。
      

  5.   


    嗯。谢谢了。
    如果用.*</a>,他会取最右边的</a>,而不是最近的那一个。这个效果不好。谢谢楼上几位朋友的相助。结贴。
      

  6.   

    '引用了Microsoft VBScript Regular Expressions 5.5
    Private Sub Form_Load()
    Dim re As RegExp
        Dim mh As Match
        Dim mhs As MatchCollection
        Dim inpStr As String
        inpStr = "<a href=a.html?111 target=_blank>这里有汉字,汉字的标点,还有英文以及英文的标点</a><a href=a.html?112 target=_blank>这里有汉字,汉字的标点,还有英文以及英文的标点</a><a href=a.html?118 target=_blank>这里有汉字,汉字的标点,还有英文以及英文的标点</a><a href=a.html?115 target=_blank>这里有汉字,汉字的标点,还有英文以及英文的标点</a>"
     Set re = New RegExp
         re.Pattern = "<a href=a.html(.)+?</a>"
        Set mhs = re.Execute(inpStr)
        Set mh = mhs(0)
        MsgBox Mid(mh, 9, 10)
         re.Pattern = ">(.)+?<"
         Set mhs = re.Execute(mh)
         Set mh = mhs(0)
         MsgBox Mid(mh, 2, Len(mh) - 2)
    End Sub
      

  7.   

    Mid(mh, 9, 10)
    这个不太好。如果那个ID是4位的就匹配不好了。