51Testing软件测试论坛

标题: 请教正则,如何提取字符串中的内容 [打印本页]

作者: deadhunter    时间: 2011-1-18 12:19
标题: 请教正则,如何提取字符串中的内容
1231231测试(铜陵有色)10日上涨5.01%

请教大家,如果我要提取()内的“铜陵有色”并赋值给一个变量a,用VBS正则怎样实现?
作者: gezhirong    时间: 2011-1-18 13:18
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
本帖最后由 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
谢谢
作者: superliming    时间: 2011-1-19 15:03

作者: my_way    时间: 2011-1-19 15:25
按照你的需求,不用正则表达式也可以这样:
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
这样试试
  1. Function RegExpTest1(patrn, strng)
  2.   Dim regEx, Match, Matches      
  3.   Set regEx = New RegExp        
  4.   regEx.Pattern = patrn         
  5.   regEx.IgnoreCase = True      
  6.   regEx.Global = True         
  7.   Set Matches = regEx.Execute(strng)   
  8.   set RegExpTest1 = Matches
  9. End Function

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

作者: joseph_wh    时间: 2011-1-29 23:31
'VBS取括号中内容
str="1231231测试(铜陵有色)10日上涨5.01%"
strget=mid(str,instr(str,"(")+1,InStrRev ...
feiyunkai 发表于 2011-1-18 13:46



    这个是最方便的方法。




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2