VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)

VB爱好者乐园(VBGood)

 找回密码
 立即注册
搜索
查看: 2671|回复: 4

[求助] 如何批量提取括号里面的字符?

[复制链接]
发表于 2013-9-8 23:05:19 | 显示全部楼层 |阅读模式
一段文字:
【解释】:正:严正;厉:严厉,严肃;色:脸色。形容板着脸,神情非常严厉。
【出自】:《汉书?王莽传》:“盱衡厉色,振扬武怒。”《后汉书?翟?传》:“目见正容,耳闻正言。”
【示例】:黛玉见他说的郑重,又且~,只当是真事。 ◎清?曹雪芹《红楼梦》第十九回
【语法】:联合式;作谓语、状语;含褒义 以下结果由汉典提供  
【使用频率】: 常用
【发音】: zhèn? yán lì sè
【解释】:正:严正;厉:严厉,严肃;色:脸色。话语严正,态度严厉。形容话语严正;态度严厉。
【出处】:《汉书?王莽传》:“盱衡厉色,振扬武怒。”
放在text1中,现在要批量提取"【】"里面的内容。提取结果如下:
解释
出自
示例
语法
使用频率
发音
解释
出处


发表于 2013-9-9 08:36:26 | 显示全部楼层
匹配位置:0        长度:4        匹配值:【解释】
匹配位置:38        长度:4        匹配值:【出自】
匹配位置:88        长度:4        匹配值:【示例】
匹配位置:130        长度:4        匹配值:【语法】
匹配位置:163        长度:6        匹配值:【使用频率】
匹配位置:176        长度:4        匹配值:【发音】
匹配位置:199        长度:4        匹配值:【解释】
匹配位置:246        长度:4        匹配值:【出处】
====================================================================================
Function RegExpTest$(ByVal Source$)                                             '正则匹配操作
    On Error Resume Next
    Dim i&, temStr$
    Dim RegExp As Object, Matches As Object
    Set RegExp = CreateObject("VBscript.RegExp")
    RegExp.Global = True
    RegExp.Pattern = "(【(.*?)】)"
    Set Matches = RegExp.Execute(Source)
    For i = 0 To Matches.Count - 1                                              '遍历所有匹配项
        If i = Matches.Count - 1 Then
            temStr = temStr & Matches(i).SubMatches(0)
        Else
            temStr = temStr & Matches(i).SubMatches(0) & vbCrLf
        End If
    Next i
    RegExpTest = temStr
    Set Matches = Nothing
    Set Matches = Nothing
End Function
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-9 16:16:53 | 显示全部楼层
不用正则呢?
回复 支持 反对

使用道具 举报

发表于 2013-9-9 18:54:50 | 显示全部楼层
失忆 发表于 2013-9-9 16:16
不用正则呢?


    Dim str1() As String
    Dim i As Integer
    str1 = Split(Text1, vbCrLf)
    For i = 0 To UBound(str1)
        Text2 = Text2 & Replace(Left(str1(i), 3), "【", "") & vbCrLf
    Next i

不正?就??吧
回复 支持 反对

使用道具 举报

发表于 2013-9-9 20:54:54 | 显示全部楼层
如果不用正则
Private Sub Command1_Click()
    Dim i As Long
    Dim j As Long
    Dim k As Long
    Dim a As String
    k = 1
    Do While k < Len(Text1)
        i = InStr(k, Text1, "【")
        j = InStr(k, Text1, "】")
        If j = 0 Then Exit Do
        a = Mid(Text1, i + 1, j - i - 1)
        Print a
        k = j + 1
    Loop
End Sub
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

文字版|手机版|小黑屋|VBGood  

GMT+8, 2021-3-5 19:13

VB爱好者乐园(VBGood)
快速回复 返回顶部 返回列表