用正则替换怎么匹配有多重嵌套的字串?
正则替换对我等业余选手太难搞了。下面是我在VB6中用于正则替换的部分代码。
Public Sub ZZ_Replace()
Const ForReading = 1
Const ForWriting = 2
Dim strTxt As String '用于查找替换的文本
Dim expTxt As String '查找串(可用正则表达式)
Dim repTxt As String '替换串
Dim s1 As String '跳出循环比较串
Dim s2 As String '跳出循环比较串
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("c:\temp.txt", ForReading)
strTxt = objFile.ReadAll
objFile.Close
strTxt = StrReplace(strTxt, "\\d\\ba\d+\\li\(([^)]*)\)([^\r\n]{1})", "[KG-3]$1$2[CD#1]")
Set objFile = objFSO.OpenTextFile("c:\temp.txt", ForWriting)
objFile.WriteLine strTxt
objFile.Close
Set objFSO = Nothing
Set objFile = Nothing
End Sub
我现在要匹配像下面有多重空心括号〖*〗嵌套的字串(实际嵌套可能比下例更复杂或简单):
↑〖A〖BC↑〖2〗+EFG↓〖35〗〗〗……,后面也有〖*〗
应怎样将↑后面的最外一层〖*〗匹配后再实行替换?如果用贪婪模式,那此字符串后面可能还有很多〗