具体代码如下:
Private Sub CommandButton1_Click()
Dim re As Object, item, i As Long, arr() '定义re为对象变量,动态数组arr()
Set re = CreateObject('vbscript.regexp') '利用后期绑定的方式创建对正则表达式的引用,赋值给变量re
With re '利用with-end with语句设置正则表达式的三个属性
.Pattern = '[^(、,。;?)].+?[、,。;?]' '设置pattern属性,确定搜索条件是以除了、,。;?这几个标点符号外的任意一个或多个字符开始,以、,。;?这几个标点符号中的任意一个结尾的字符串。
.ignorecase = True '设置ignorerance属性,值为true表示忽略大小写进行搜索,这里也可以不要这句
.Global = True '设置global属性,值为true表示对目标文本进行全局匹配,这段文字中所有符合搜索条件的都被考虑到
End With
If re.test(Range('a1').Text) Then 'test方法检验正则表达式有没有在A1单元格的文本中匹配到pattern中的字符
For Each item In re.Execute(Range('a1').Text)
i = i + 1
ReDim Preserve arr(1 To i) '根据集合的元素个数确定i,根据i的变化重新声明动态数组的上界,用以保存正则表达式所提取出来的所有符合条件的字符串
arr(i) = item
Next
End If
Range('o1').Resize(i, 1) = WorksheetFunction.Transpose(arr) '将数组arr中的数据列排到o列
End Sub
联系客服