实例需求:
待处理字符串: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行代码输出结果。