请问这个正则表达式应该怎么修改才能实现截取最靠近中间字符的某个字符串开始截取字符

后端VB写程序提取网站的数据。要提取网页代码中的数据,网页基本格式如下
.......
《li》姓名:张三《/li》
《li》年龄:35《/li》
《li》职业:教师《/li》
.....
《li》分数:99《/li》
....

我就要提取分数进行统计,我写的正则表达式内容为《li 》[^\x00]+?分数[^\x00]+?《/li》
提取出来都带有姓名等不必要的信息,提出来是
《li》姓名:张三《/li》
《li》年龄:35《/li》
《li》职业:教师《/li》
.....
《li》分数:99《/li》
这样后期还要再进行按《/li》分割字符再筛选。虽然结果可以出来,但是不是很喜欢。请问怎么改正则定义才能实现只从最靠近"分数"的《li》字符开始提取,提取出来就是《li》分数:99《/li》这段就好了。
谢谢先

不是只提取数字呀,要一整段《li》分数:99《/li》,就是《li》需要最靠近分数左边的这个

补充:我不是要文本内容,我要截“分数”所在的

网页源代码,我现在写的正则把网页源码中出现的第一个“姓名”开始到“分数”后面的给我返回来了。我不知道怎么改成只返回“分数”左边的(就是事列代码中地4个)到“分数”右边的第一个

不知道你是用前端语言还是后端语言,如果是后端语言的话有很多第三方开源库可以轻松做到

这样就行了吧

 分数:\d+

/S*表示多个字符串

<li>[^<>]+?分数[^<>]+?</li> 

有解析html的库 很方便的

如果你需要正则匹配文本内容,正则表达式为:

[\s\S]*。如果对你有帮助,希望你能采纳

如果你需要正则匹配文本内容,正则表达式为:

 <li>[\s\S]*</li>

。如果对你有帮助,希望你能采纳

内容:

s姓名:张三 dsss
年龄:35 fv
职sf业:s教师 c
分数:99 a

s姓名:张三
年s龄:35
职dd业:教师cx
x分数:100

预期的结果是:

分数:99 a
x分数:100

经过测试使用这个方式可以提出来。不知道你的意思是不是这样。
表达式:

.*分数.*

内容:

《li》s姓名:张三 dsss《/li》
《li》年龄:35 fv《/li》
《li》职sf业:s教师 c《/li》
《li》分数:99 a《/li》


《li》s姓名:张三 《/li》
《li》年s龄:35 《/li》
《li》职dd业:教师cx 《/li》
《li》x分数:100《/li》
预期的结果是:

《li》分数:99 a 《/li》
《li》x分数:100《/li》
经过测试使用这个方式可以提出来。不知道你的意思是不是这样。
表达式:

《li》.*分数.*《/li》

直接用“分数:(\d+)”不就好了?
下面是vb6测试代码:

 '此代码由 [正则测试工具 v1.1.43](http://blog.csdn.net/sysdzw/article/details/6141844 "")  自动生成,请直接调用TestReg过程
Private Sub TestReg()
    Dim strData As String
    Dim reg As Object
    Dim matchs As Object, i As Integer, j As Integer
    strData = "<li>姓名:张三</li>"  &  vbCrLf  & _
              "<li>年龄:35</li>"  &  vbCrLf  & _
              "<li>职业:教师</li>"  &  vbCrLf  & _
              "....."  &  vbCrLf  & _
              "<li>分数:99</li>"  &  vbCrLf  & _
              "<li>姓名:张三</li>"  &  vbCrLf  & _
              "<li>年龄:35</li>"  &  vbCrLf  & _
              "<li>职业:教师</li>"  &  vbCrLf  & _
              "....."  &  vbCrLf  & _
              "<li>分数:88</li>"
    Set reg = CreateObject("vbscript.regExp")
    reg.Global = True
    reg.IgnoreCase = False
    reg.MultiLine = True
    reg.Pattern = "分数:(\d+)"
    Set matchs = reg.Execute(strData)
    For i = 0 To matchs.Count - 1
        Debug.Print i + 1 & "." & matchs(i)
        For j = 0 To matchs(i).SubMatches.Count - 1
           Debug.Print "(" & j + 1 & ")." & matchs(i).SubMatches(j) & " ";
        Next
        If matchs(i).SubMatches.Count > 0 Then Debug.Print
    Next
End Sub

第一,如果要提取html的数据,最好使用xpath加正则。
第二,如果要用正则,可以用分组捕获,就是使用()括起来你要的,然后调用正则的match对象(从MatchCollection中提取),在将match中的SubMatches就是每个捕获组的值。比如第一个括号的内容就是match.SubMatches(0)