deadhunter 发表于 2011-1-18 12:19:05

请教正则,如何提取字符串中的内容

1231231测试(铜陵有色)10日上涨5.01%

请教大家,如果我要提取()内的“铜陵有色”并赋值给一个变量a,用VBS正则怎样实现?

gezhirong 发表于 2011-1-18 13:18:39

Function regtest(strng,patrn)
Set regex=new regexp
regex.pattern=patrn
regex.global=true
regex.ignorecase=true
set matches=regex.execute(strng)
For each match in matches
        regtest=match
Next
End Function
str="1231231测试(铜陵有色)10日上涨5.01%"
pat="铜陵有色"
a= regtest(str,pat)
msgbox a

feiyunkai 发表于 2011-1-18 13:46:05

本帖最后由 feiyunkai 于 2011-1-18 13:50 编辑

'VBS取括号中内容
str="1231231测试(铜陵有色)10日上涨5.01%"
strget=mid(str,instr(str,"(")+1,InStrRev(str,")")-(instr(str,"(")+1))
msgbox strget

deadhunter 发表于 2011-1-18 16:06:30

谢谢

superliming 发表于 2011-1-19 15:03:17

my_way 发表于 2011-1-19 15:25:21

按照你的需求,不用正则表达式也可以这样:
Dim str : str = "1231231测试(铜陵有色)10日上涨5.01%"
For i = 1 to Len(str)
        If mid(str,i,len("铜陵有色")) = "铜陵有色"Then
               a = mid(str,i,len("铜陵有色"))
               Exit for
        End If
        If i = Len(str) Then
                msgbox "铜陵有色 was not found!"
        End If
Next

wugecat 发表于 2011-1-19 17:53:50

这样试试Function RegExpTest1(patrn, strng)
Dim regEx, Match, Matches      
Set regEx = New RegExp      
regEx.Pattern = patrn         
regEx.IgnoreCase = True      
regEx.Global = True         
Set Matches = regEx.Execute(strng)   
set RegExpTest1 = Matches
End Function

Set a=RegExpTest1 ("[^1231231测试\(].*[^\)10日上涨5.01%]","1231231测试(铜陵有色)10日上涨5.01%")
'msgbox a.count
For i=0 to a.count-1
msgbox a(i).value
Next

joseph_wh 发表于 2011-1-29 23:31:09

'VBS取括号中内容
str="1231231测试(铜陵有色)10日上涨5.01%"
strget=mid(str,instr(str,"(")+1,InStrRev ...
feiyunkai 发表于 2011-1-18 13:46 http://bbs.51testing.com/images/common/back.gif


    这个是最方便的方法。
页: [1]
查看完整版本: 请教正则,如何提取字符串中的内容