实例需求: 待处理字符串:5*s+s[面积s=222m2]+s*5[套s=333m2s]+s+s/s^2 处理规则:保留中括号中的全部字符,将其他部分字符中的s替换数字3 结果为:5*3+3[面积s=222m2]+3*5[套s=333m2s]+3+3/3^2 示例代码如下。
Sub Demo()
Dim strWord As String
Dim objRegExp As Object
Set objRegExp = CreateObject("VBSCRIPT.REGEXP")
strWord = "5*s+s[面积s=222m2]+s*5[套s=333m2s]+s+s/s^2"
With objRegExp
.Global = True
.Pattern = "s(?=[^\]]*?(\[|$))"
.ignoreCase = True
strWord = .Replace(strWord, "3")
Debug.Print strWord
End With
Set objRegExp = Nothing
End Sub
【代码解析】 第4行代码创建正则表达式对象。 第5行代码设置初始字符串变量。 第8行代码设置匹配模式。
正则表达式说明[^\]]*?非贪懒匹配非]字符(\[|$)匹配[或者字符串结束符(?=[^\]]*?(\[|$))顺序肯定环视,用于判断字符之后的字符符合指定模式
简要总结需要定位的s的特征是:其后至下一个右括号或者字符串结束符(含)之间,必须存在一个左括号或者字符串结束符。 第10行代码执行正则替换,将s替换为3。 第11行代码输出结果。
|