</head> <body> <h1>RegExReplace</h1> <p>文字列の中にあるパターン(正規表現)の出現箇所を置き換えます。</p> <pre class="Syntax">NewStr := <span class="func">RegExReplace</span>(Haystack, NeedleRegEx <span class="optional">, Replacement, &amp;OutputVarCount, Limit, StartingPos</span>)</pre> <h2 id="Parameters">パラメータ</h2> <dl> <dt>Haystack</dt> <dd> <p>型:<a href="../Concepts.htm#strings">文字列</a></p> <p>内容を検索・置換する文字列。バイナリーゼロを含む場合があります。</p> </dd> <dt>NeedleRegEx</dt> <dd> <p>型:<a href="../Concepts.htm#strings">文字列</a></p> <p>検索するパターンで、Perl互換正規表現(PCRE)です。パターンの<a href="../misc/RegEx-QuickRef.htm#Options">オプション</a>がある場合は、文字列の先頭に含める必要があり、その後に閉じ括弧が続きます。例えば、<span class="regex"><span class="red">i)</span>abc.*123</span>というパターンは、大文字小文字を区別しないオプションをオンにし、「abc」の後に任意の文字が0回以上出現し、その後に「123」が続くものを検索対象とします。オプションがない場合、「)」はオプションです。例えば、<span class="regex">)abc</span>は<span class="regex">abc</span>と同等です。</p> <p><em>NeedleRegEx</em>はバイナリーゼロを含むことができませんが、<em>Haystack</em>内のバイナリーゼロに一致させるために、パターン<code>\x00</code>を使用することができます。</p> </dd> <dt>Replacement</dt> <dd> <p>型:<a href="../Concepts.htm#strings">文字列</a></p> <p>空白または省略したときは、<em>NeedleRegEx</em>は空白(空)に置き換えられ、戻り値から省略されます。Otherwise, specify the string to be substituted for each match, which is plain text (not a regular expression).</p> <p id="BackRef">This parameter may include backreferences like $1, which brings in the substring from <em>Haystack</em> that matched the first <a href="../misc/RegEx-QuickRef.htm#subpat">subpattern</a>. 最も単純な後方参照は$0から$9で、$0はパターン全体に一致した部分文字列、$1は最初の部分パターンに一致した部分文字列、$2は2番目、といった具合になります。For backreferences greater than 9 (and optionally those less than or equal to 9), enclose the number in braces; e.g. ${10}, ${11}, and so on. <a href="RegExMatch.htm#NamedSubPat">名前付きサブパターン</a>の場合は、名前を中括弧で囲みます(例:${SubpatternName})。リテラルで$を指定する場合は$$を使用します(このような特別な扱いが必要な文字はこの文字だけで、バックスラッシュは何もエスケープする必要はありません)。</p> <p>サブパターンの大文字と小文字を変換するには、$の後に次のいずれかの文字を記述します:Uまたはu(大文字)、Lまたはl(小文字)、Tまたはt(タイトルケース、各単語の最初の文字を大文字にし、他を小文字にしたもの)。例えば、$U1と$U{1}は、どちらも最初のサブパターンの大文字を転写する。</p> <p>存在しない後方参照や、<em>Haystack</em>で何もマッチしなかったもの<span class="regex">(abc)|(xyz)</span>のサブパターンの1つなど)は、空文字列として書き出されます。</p> </dd> <dt>&amp;OutputVarCount</dt> <dd> <p>型:<a href="../Concepts.htm#variable-references">VarRef</a></p> <p>省略したときは、対応する値は保存されません。そうでないときは、置換が発生した回数を格納する出力変数への参照を指定する(何もない場合は0)。</p> </dd> <dt>Limit</dt> <dd> <p>型:<a href="../Concepts.htm#numbers">整数</a></p> <p>省略すると、初期値は-1となって<em>Haystack</em> で見つかった<u>すべて</u>が置き換えられます。そうでないときは、置換を許可する最大数を指定します。<em>ヘイスタック</em>の右側はそのまま。</p> </dd> <dt>StartingPos</dt> <dd> <p>型:<a href="../Concepts.htm#numbers">整数</a></p> <p>If omitted, it defaults to 1 (the beginning of <em>Haystack</em>). それ以外の場合は、2文字目から始める場合は2、3文字目から始める場合は3、といった具合に指定します。<em>StartingPos</em>が <em>Haystack</em>の長さを超えている場合、<em>Haystack</em>の末尾にある空の文字列から検索を開始します(通常、置換されない結果になります)。</p> <p>負の<em>StartingPos</em>を指定すると、その位置で右からスタートする。例えば、-1は最後の文字から、-2はその次の文字から始まります。<em>StartingPos</em>が <em>Haystack</em>の左端を越えようとした場合、<em>Haystack</em>の全てが検索される。</p> <p>0を指定すると、<em>Haystack</em>の末尾、つまり最後の文字の右側の位置から開始します。これは、<code>(?&lt;=a)</code>のようなゼロ幅のアサーションで使用することができます。</p> <p><em>StartingPos</em>の値にかかわらず、戻り値は常に<em>Haystack</em>の完全なコピーです。唯一の違いは、<em>StartingPos</em>が1の場合に起こるであろうことと比較して、その左側の多くが変更されていないかもしれないということです。</p> </dd> </dl> <h2 id="Return_Value">戻り値</h2> <p>型:<a href="../Concepts.htm#strings">文字列</a></p> <p>この関数は、操作によって内容が置換されたバージョンの<em>Haystack</em>を返します。交換の必要がない場合は、<em>Haystack</em>はそのまま返却されます。</p> <h2 id="Errors">エラー</h2> <p>以下の場合、<a href="Error.htm">Error</a>がスローされます:</p> <ul> <li>パターンに構文エラーがある場合。</li> <li>正規表現の<em>実行</em>中にエラーが発生しました。</li> </ul> <p>詳しくは、<a href="RegExMatch.htm#Errors">RegExMatch</a>をご覧ください。</p> <h2 id="Options">Options</h2> <p>See <a href="../misc/RegEx-QuickRef.htm#Options">RegEx Quick Reference</a> for options such as <span class="regex"><span class="red">i)</span>abc</span>, which turns off case-sensitivity.</p> <h2 id="Performance">パフォーマンス</h2> <p>単純な部分文字列の置換には、RegExReplaceよりも高速な<a href="StrReplace.htm">StrReplace</a>を使用します。</p> <p>最大置換数がわかっている場合、<em>Limit</em>パラメータにそれを指定すると、検索を早期に停止できるため、パフォーマンスが向上します(これにより、操作中のシステムのメモリ負荷も軽減される可能性があります)。例えば、大きな文字列の先頭付近に1つしかマッチしないことが分かっている場合、制限値1を指定します。</p> <p>パフォーマンスを向上させるため、最近使用された100個の正規表現をメモリ上にキャッシュしておく(コンパイルされた状態)。</p> <p><a href="../misc/RegEx-QuickRef.htm#Study">学習オプション(S)</a>は、(ループ内などで)何度も使用される正規表現のパフォーマンスを向上させることができる場合があります。</p> <h2 id="Remarks">備考</h2> <p>abc123 のようなほとんどの文字は、正規表現の中で文字通り使用することができます。しかし、<code>\.*?+[{|()^$</code> の集合に含まれる文字は、リテラルとみなされるためには、その前にバックスラッシュが必要です。例えば、<span class="regex">\.</span>はリテラルピリオド、<span class="regex">\\</span>はリテラルバックスラッシュです。エスケープを回避するには、\Q...\Eを使用します。For example: <span class="regex">\QLiteral Text\E</span>.</p> <p>正規表現の中で、タブや改行などの特殊文字は、アクセント記号(`)またはバックスラッシュ(\)でエスケープすることができます。For example, <span class="regex">`t</span> is the same as <span class="regex">\t</span> except when the <a href="../misc/RegEx-QuickRef.htm#opt_x">x option</a> is used.</p> <p>正規表現の基本を学ぶ(またはパターン構文の記憶を取り戻す)には、<a href="../misc/RegEx-QuickRef.htm">RegExクイックリファレンス</a>をご覧ください。</p> <h2 id="Related">関連</h2> <p><a href="RegExMatch.htm">RegExMatch</a>、<a href="../misc/RegEx-QuickRef.htm">正規表現クイックリファレンス</a>、<a href="../misc/RegExCallout.htm">正規表現の吹き出し</a>、<a href="StrReplace.htm">StrReplace</a>、<a href="InStr.htm">InStr</a></p> <p>テキストデータの一般的なソース:<a href="FileRead.htm">FileRead</a>、<a href="Download.htm">Download</a>、<a href="A_Clipboard.htm">A_Clipboard</a>、<a href="GuiControls.htm#Edit">GUI Edit コントロール</a></p> <h2 id="Examples">例</h2> <p>一般的なRegExの例については、<a href="../misc/RegEx-QuickRef.htm">RegExクイックリファレンス</a>をご覧ください。</p> <div class="ex" id="ExDollar"> <p><a class="ex_number" href="#ExDollar"></a> 「abc123xyz」を報告するのは、$が末尾にのみマッチングを許可しているからです。</p> <pre>MsgBox RegExReplace("abc123123", "123$", "xyz")</pre> </div> <div class="ex" id="ExCaseInsens"> <p><a class="ex_number" href="#ExCaseInsens"></a> 大文字小文字を区別しないオプションで一致したため、「123」を報告します。</p> <pre>MsgBox RegExReplace("abc123", "i)^ABC")</pre> </div> <div class="ex" id="ExBackref"> <p><a class="ex_number" href="#ExBackref"></a> $1<a href="#BackRef">バックリファレンス</a>によって「aaaXYZzzz」を報告する。</p> <pre>MsgBox RegExReplace("abcXYZ123", "abc(.*)123", "aaa$1zzz")</pre> </div> <div class="ex" id="ExOutputVarCount"> <p><a class="ex_number" href="#ExOutputVarCount"></a> 空文字列を報告し、<var>ReplacementCount</var>に2を格納します。</p> <pre>MsgBox RegExReplace("abc123abc456", "abc\d+", "", &amp;ReplacementCount)</pre> </div> </body> </html>