现有数据格式如下:1.adkdadka
2.大大大快打开
3.555想通过正则表达式获取:
1.
2.即:只取“.”后为中文或英文的字符串,然后截取前面的【数字+.】。我用 \d+\.[a-zA-Z\u0391-\uFFE5] ,则出现:
1.a
2.大.后面的不要,怎么办?求版上大神~~多谢!
2.大大大快打开
3.555想通过正则表达式获取:
1.
2.即:只取“.”后为中文或英文的字符串,然后截取前面的【数字+.】。我用 \d+\.[a-zA-Z\u0391-\uFFE5] ,则出现:
1.a
2.大.后面的不要,怎么办?求版上大神~~多谢!
如果只是"非数字"的话:
/\d+\.(?=\D+)/
我改成这样:\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”等字符串,就不取它们。但是照样可以取【数字.数字】的。
大牛们~~~~雪地跪求帮助啊。
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
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
楼上wuyazhe给出的,帮我解决了,多谢!!结贴。
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行是之前的正则(注释掉了)。如果没注释的话,程序能运行,不报错。麻烦大哥帮我看看