现有数据格式如下:1.adkdadka
2.大大大快打开
3.555想通过正则表达式获取:
1.
2.即:只取“.”后为中文或英文的字符串,然后截取前面的【数字+.】。我用  \d+\.[a-zA-Z\u0391-\uFFE5]  ,则出现:
1.a
2.大.后面的不要,怎么办?求版上大神~~多谢!

解决方案 »

  1.   

    /\d+\.(?=[a-zA-Z\u0391-\uFFE5]+/
    如果只是"非数字"的话:
    /\d+\.(?=\D+)/
      

  2.   

    多谢LS。不过,在用正则表达式测试软件RegexTester.exe测试时,没有结果继续求。。
      

  3.   

    谢谢楼上思路。
    我改成这样:\d+\.(?=[a-zA-Z\u0391-\uFFE5])+ ,但是有问题。实际上,我想实现的是下面这种效果:现有数据格式如下:2.adkdadka
    10.1种web2.0技术实现
    101.95633
    1003.深交所其中1、10、101、1003等都处于文本的第一位,前面没有字符。想通过正则表达式获取得到:
    2.
    10.
    101.
    1003.我原来的思路是:只取“.”后为中文或英文的字符串,然后截取前面的【数字+.】,使用\d+\.(?=[a-zA-Z\u0391-\uFFE5])+ ,但是结果是:2.
    1003.并不是我要的结果。需要注意的是第二行中有个“web2.0技术”。也就是说,我可以设定:只要遇到“web2.0”,或是“2.0”等字符串,就不取它们。但是照样可以取【数字.数字】的。
    大牛们~~~~雪地跪求帮助啊。
      

  4.   

    Private Sub Command1_Click()
        Dim st As String
        '是一个不定长度的字符串,如下:
        st = "1.adkdadka" + vbCrLf + "2.大大大快打开" + vbCrLf + "3.555"    '使用正则匹配
        Dim mc As MatchCollection
        Set mc = Matches("\b\d+\.", st)
        Dim m As Match
        For Each m In mc
          MsgBox m.Value
        Next
    End Sub
      

  5.   

    Private Sub Command1_Click()
        Dim st As String
        '是一个不定长度的字符串,如下:
        st = "1.adkdadka" + vbCrLf + "2.大大大快打开" + vbCrLf + "3.555"    '使用正则匹配
        Dim mc As MatchCollection
        Set mc = Matches("(^|[\r\n]+)\s*(\d+\.)", st)
        Dim m As Match
        For Each m In mc
          MsgBox m.SubMatches(1) '这m.SubMatches(1)是你要的,比较准确了
        Next
    End Sub
      

  6.   

    非常感谢alzeng!!!不厌其烦帮忙解答!!
    楼上wuyazhe给出的,帮我解决了,多谢!!结贴。
      

  7.   

    11L老兄。vb中的正则表达式不能使用问号?么?,程序提示出错。
      

  8.   

    网上的一个正则替换函数:Public Function StrReplace(s As String, p As String, r As String) As String
        
        Dim re As RegExp
        Set re = New RegExp
         re.IgnoreCase = True
         re.Global = True
         re.Pattern = p
         StrReplace = re.Replace(s, r)
        
    End Function
    然后,我在窗体中的代码:
    Dim s As String
    Dim regxuhao As String 
    Dim regtihuan As String 
    'regxuhao = "\d+\.(?=[a-zA-Z\u0391-\uFFE5])+" 
    regxuhao = "(?m)^\d+\." 
    regtihuan = "  " '设置替换为空格这一段是读取内容,省略
    s = StrReplace(s, regxuhao, regtihuan)
    运行后提示“对象relapce的方法 iregexp2失败”
    第4行是之前的正则(注释掉了)。如果没注释的话,程序能运行,不报错。麻烦大哥帮我看看
      

  9.   

    把replace打错了是:实时错误5017对象'Replace'的方法'IRegExp2'失败