一部のデータ内で特注の 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