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