51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1766|回复: 7
打印 上一主题 下一主题

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

[复制链接]
  • TA的每日心情
    郁闷
    2018-11-15 14:58
  • 签到天数: 2 天

    连续签到: 2 天

    [LV.1]测试小兵

    跳转到指定楼层
    1#
    发表于 2011-1-18 12:19:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    1231231测试(铜陵有色)10日上涨5.01%

    请教大家,如果我要提取()内的“铜陵有色”并赋值给一个变量a,用VBS正则怎样实现?
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    该用户从未签到

    2#
    发表于 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
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2014-12-18 10:31
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    3#
    发表于 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
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2018-11-15 14:58
  • 签到天数: 2 天

    连续签到: 2 天

    [LV.1]测试小兵

    4#
     楼主| 发表于 2011-1-18 16:06:30 | 只看该作者
    谢谢
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
    发表于 2011-1-19 15:03:17 | 只看该作者
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
    发表于 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
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
    发表于 2011-1-19 17:53:50 | 只看该作者
    这样试试
    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
    复制代码
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
    发表于 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



        这个是最方便的方法。
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-14 08:55 , Processed in 0.065657 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表