DIM re2:Set re2 = New RegExp
WITH re2
.Pattern = "dol amp"
.IgnoreCase = True
.Global = True
MsgBox .Replace("put dol amp here","ok$&done")
' Expected: put ok$&done here
' Observed: put okdol ampdone here
END WITH
ドキュメントに基づいています。
"正規表現(正規表現)オブジェクト"
https://msdn.microsoft.com/en-us/library/yab2dx62(v=vs.84).aspx
https://msdn.microsoft.com/en-us/library/k9z80300(v=vs.84).aspx
"正規表現の概要(スクリプト)"
https://msdn.microsoft.com/en-us/library/6wzad2b2(v=vs.84).aspx
ここでのコントラストの成功:
DIM re2:Set re2 = New RegExp
WITH re2
.Pattern = "dol amp"
.IgnoreCase = True
.Global = True
MsgBox .Replace("put dol amp here","ok$ &done")
' Expected: put ok$ &done here
' Observed: as expected
END WITH
"記載されていないものは未定義と同じではありません。"この動作が文書化されていないという事実は、それを未定義にします。 'コンピュータプログラミングでは、未定義動作(UB)は、プログラムの現在の状態(メモリなど)に対して、その動作がコードに準拠している言語仕様で規定されていないコンピュータコードを実行した結果です。 - https://en.wikipedia.org/wiki/Undefined_behavior – ChrisJJ
"マイクロソフトでは、長い間、文字をエスケープする特殊な意味を持っています。これを倍増させることで、&は共通のメタキャラクターです。推測。この場合、倍増して失敗します。 – ChrisJJ
*この動作が文書化されていないため、定義されていません。MSDNのVBScriptのドキュメントは、[言語仕様](https://en.wikipedia.org/wiki/Programming_language_specification)(私の知る限り公開されていない)ではないことを理解していないだけです。 –