Excel 如何使用正则抽取特定字符之间的内容

如题所述

1.新建一个空白工作簿,在工作表界面按下组合快捷键Alt+F11或者右键单击任意一个工作表标签,在弹出的右键快捷菜单单击“查看代码”进入VBA编辑环境,如下图所示:

2.在“代码窗口“中复制粘贴以下代码:

Sub RegTest()

'定义正则表达式对象

Dim oRegExp As Object

'定义匹配字符串集合对象

Dim oMatches As Object

'创建正则表达式

'定义要执行正则查找的文本变量

Dim sText As String

sText = "这是v一个正则表达式b的范例程序a代码"

Set oRegExp = CreateObject("vbscript.regexp")

With oRegExp

'设置是否匹配所有的符合项,True表示匹配所有, False表示仅匹配第一个符合项

.Global = True

'设置是否区分大小写,True表示不区分大小写, False表示区分大小写

.IgnoreCase = True

'设置要查找的字符模式

.Pattern = "[\u4e00-\u9fa5]+"

'判断是否可以找到匹配的字符,若可以则返回True

MsgBox .Test(sText)

'对字符串执行正则查找,返回所有的查找值的集合,若未找到,则为空

Set oMatches = .Execute(sText)

'把字符串中用正则找到的所有匹配字符替换为其它字符

MsgBox .Replace(sText, "")

End With

Set oRegExp = Nothing

Set oMatches = Nothing

End Sub

如下图所示:

3.执行以上代码,将把 sText = "这是v一个正则表达式b的范例程序a代码" 变量中的中文字符全部删除,将只返回"vba"3个英文字符,如下图所示。其中的.Pattern = "[\u4e00-\u9fa5]+"表示匹配所有中文字符,Pattern属性是正则表达式对象的核心,当需要执行其它查找替换时一般都只需更改Pattern属性即可。

4.一些常见的正则Pattern如下:

[0-9]表示匹配任意一个数字

[a-zA-Z]表示匹配任意一个英文字母

[\u4e00-\u9fa5]表示匹配任意一个中文字符。

温馨提示:内容为网友见解,仅供参考
第1个回答  2019-07-17

不需要使用vba,直接用这个,即可用正则式抽取Excel中的特殊字符,操作如下:

工具地址:www.excelfb.com  点击: (按正则式)拆分一列(单元格)为多列(提取单元格数字等)

写入相应的正则式即可

EXCEL中从一个字符串中提取特定字符后的几位文字
如何从一个字符串中提取汉字 使用正则表达式查找替换所有的HTML代码为空就可以了。 \/<(.*)>.*<\\\/\\1>\/这个就是匹配的所有代码的正则。 补充: using System.Text.RegularExpressions;需要引用 利用正则表达式去掉"<"和">"之间的内容 private string StripHT(string strHtml) { Regex r...

Excel 如何在一串字符中只抽取数字
可选用以下方法抽取:1、给出数字的起始位置和长度。示例公式:=--mid(a1,5,3) 公式结果为提取A1单元格中从第5位开始的3个数字。2、抽取某特定字符串后的数字。示例公式:=-lookup(0,-mid(a1,find("ABC",a1)+LEN("ABC"),row(1:99))) 公式结果为提取A1单元格中字符串ABC之后的数字。3、...

ue设置8字符列竖线
这则技巧是在UltraEdit的帮助文件里提到.CTRL+R 调出来替换(Replace)窗口,选中"使用正则表达式";然后用查找 %*你的字符串*^p 替换成空内容即可.如,我当前有个文本文件,需要去掉所有包含http:\/\/www.dbanotes.net\/这个字符串的行,查找%*http:\/\/www.dbanotes.net\/*^p替换成空即可.注意,^p 是 DOS 文件类型的...

相似回答