关于vba中正则表达式的问题,有效一定追加分数

现在我有一个String 变量,里面存了很长的一段字符串,格式是
........ <style ........style>..........
我现在想把<style 和style>间的部分取出来,存到一个变量里,去掉<style 和style>间的部分剩下存到一个变量里,怎么实现啊,求代码,求帮助
最新回答
写不尽的思念

2024-11-03 01:43:46

VBA可以用Excel自带的函数呀,用发,Application.WorsheetFunction.
利用Find()找到<style,和style>的位置,然后用Mid截取。
Dim TestStr as string
TestStr = "<style ABCDEFGHIJKLMN style>"
DIm StaPo as integer
StaPo = Application.WorsheetFunction.FIND("<style",TestStr,1) + 6‘你要找的字符长6位
Dim EndPo as integer
EndPo = Application.WorsheetFunction.FIND("style>,TestStr,StaPo + 1)
Dim MidStr as String'这个就是你要的了
MidStr = Application.WorsheetFunction.Mid(TestStr,StaPo,EndPo-StaPo-6)
夏了夏天

2024-11-03 05:24:56

假设你的string变量是a
b、c是新变量
b=split(split(a,"<style")(1),"style>")(0)
c=split(a,"<style")(0) & split(a,"style>")(1)
看看这样是不是能实现你的功能,当然这个只是对于你的字符串里边只有一个<style ........style>的情况,如果多的话就得用正则替换了。
追问
这样不对啊,多出来好多引号,而且 都不在取到的变量里
追答
引号肯定也是在你原来的字符串里边的啊,想要在变量里就在C上边连接上去就行了
追问
之前是我弄错了,但是现在b对了,是之间的内容,但是c不对啊,不是剩余部分的组合啊
追答
如果只有一个style组合的话应该不会的,你可以百度看一下split的用法,其实就是把字符串分割然后存入一维数组,然后根据数据组合就行了
不归鸟

2024-11-03 08:05:48

Sub abc()
Dim reg As Object
Set reg = CreateObject("vbscript.regexp")
arr = "abcd<styleefghijklmnopstyle>qrstuvwxyz"
With reg
.Global = True
.Pattern = "<style|style>"
brr = Split(.Replace(arr, "@"), "@")
MsgBox brr(1) & Chr(10) & brr(0) & brr(2)
End With
Set reg = Nothing
End Sub