0

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

0 に答える 0