我正在尝试在某些数据中捕获定制的 html 样式标签的内容。
然后我想用占位符替换内容和周围的标签。
我正在使用 objMatch.Value 和 objMatch.SubMatches(0) 分别访问“内容+标签”和“仅内容”。但是,标记的尖括号似乎导致这两个都只返回内容。
这打破了:
"<MyTag\b[^>]*>(.*?)</MyTag>"
objMatch.Value 和 objMatch.SubMatches(0) 都只返回内容。
这有效:
...但是如果我将所有尖括号更改为美元符号,如下所示:
"$MyTag\b[^$]*$(.*?)$/MyTag$"
objMatch.Value 返回“内容 + 标记”,而 objMatch.SubMatches(0) 返回“仅内容”。正如预期和期望的那样。
任何人都可以解释这是为什么,和/或我如何改变我的正则表达式模式来解决它?
完整代码
Dim oRegEx
Set oRegEx = New RegExp
oRegEx.IgnoreCase = True
oRegEx.Global = True
oRegEx.Pattern = "<MyTag\b[^>]*>(.*?)</MyTag>"
dim matches()
dim replacements()
dim i: i = 0
dim objMatch
For Each objMatch in oRegEx.Execute(stringToTest)
redim preserve matches(i)
redim preserve replacements(i)
replacements(i) = objMatch.Value
matches(i) = objMatch.SubMatches(0)
i = (i + 1)
Next