Excel VBA如何移除字符串中<与>之间的内容(含符号)?
Excel VBA 移除HTML a标签提取纯文本的方法
嘿,这事儿好办!要从那段带a标签的字符串里抠出Barnes (Ashley),用你说的「移除<与>之间所有内容」的思路完全靠谱,我给你准备了两种Excel VBA的实现方法,随便挑一个用:
方法一:正则表达式(高效推荐)
正则能精准匹配所有HTML标签,一次性替换干净,处理大量数据时效率更高。不用额外引用库,直接复制代码就能用:
Sub GetPureTextFromATag() Dim originalStr As String Dim cleanText As String Dim regExpObj As Object ' 替换成你的目标字符串,也可以从单元格读取,比如Range("A1").Value originalStr = "<a title="" href=""/player-profiles/ashley-barnes/"" data-hasqtip=""19"" oldtitle=""Ashley Barnes"">Barnes (Ashley)</a>" ' 创建正则对象(Late Binding,无需手动引用库) Set regExpObj = CreateObject("VBScript.RegExp") With regExpObj .Global = True ' 开启全局匹配,替换所有标签 .Pattern = "<[^>]+>" ' 匹配所有<开头、>结尾的标签内容 End With ' 把所有匹配到的标签替换为空字符串 cleanText = regExpObj.Replace(originalStr, "") ' 输出结果,也可以写入单元格:Range("B1").Value = cleanText MsgBox "提取到的纯文本:" & cleanText End Sub
简单说下原理:"<[^>]+>"这个正则模式会匹配从<开始,到>结束的所有内容,不管标签里有多少属性,都能一网打尽。.Global = True保证把字符串里所有的标签都替换掉,不会漏网。
方法二:循环查找替换(新手友好)
如果对正则不太熟悉,用循环查找<和>的位置,逐步删除标签内容也能达到目的:
Sub ExtractTextManually() Dim originalStr As String Dim tagStart As Integer Dim tagEnd As Integer originalStr = "<a title="" href=""/player-profiles/ashley-barnes/"" data-hasqtip=""19"" oldtitle=""Ashley Barnes"">Barnes (Ashley)</a>" ' 循环查找所有<标签,直到找不到为止 Do While InStr(originalStr, "<") > 0 tagStart = InStr(originalStr, "<") ' 找到<的位置 tagEnd = InStr(originalStr, ">") ' 找到对应的>的位置 ' 如果找到有效的标签对,就删除<到>之间的内容 If tagEnd > tagStart Then originalStr = Left(originalStr, tagStart - 1) & Mid(originalStr, tagEnd + 1) End If Loop ' 输出结果 MsgBox "提取到的纯文本:" & originalStr End Sub
这个方法的逻辑很直观:每次找到<和>的位置,就把这两个符号连同中间的内容删掉,反复循环直到字符串里没有<,剩下的就是你要的纯文本了。
小提示
如果你的字符串是从单元格读取的,只需要把originalStr的赋值改成originalStr = Range("你的单元格地址").Value就行,比如Range("A1").Value。
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

