RegExReplace

文字列の中にあるパターン(正規表現)の出現箇所を置き換えます。

NewStr := RegExReplace(Haystack, NeedleRegEx , Replacement, &OutputVarCount, Limit, StartingPos)

パラメータ

Haystack

型:文字列

内容を検索・置換する文字列。バイナリーゼロを含む場合があります。

NeedleRegEx

型:文字列

検索するパターンで、Perl互換正規表現(PCRE)です。パターンのオプションがある場合は、文字列の先頭に含める必要があり、その後に閉じ括弧が続きます。例えば、i)abc.*123というパターンは、大文字小文字を区別しないオプションをオンにし、「abc」の後に任意の文字が0回以上出現し、その後に「123」が続くものを検索対象とします。オプションがない場合、「)」はオプションです。例えば、)abcabcと同等です。

NeedleRegExはバイナリーゼロを含むことができませんが、Haystack内のバイナリーゼロに一致させるために、パターン\x00を使用することができます。

Replacement

型:文字列

空白または省略したときは、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つなど)は、空文字列として書き出されます。

&OutputVarCount

型:VarRef

省略したときは、対応する値は保存されません。そうでないときは、置換が発生した回数を格納する出力変数への参照を指定する(何もない場合は0)。

Limit

型:整数

省略すると、初期値は-1となってHaystack で見つかったすべてが置き換えられます。そうでないときは、置換を許可する最大数を指定します。ヘイスタックの右側はそのまま。

StartingPos

型:整数

If omitted, it defaults to 1 (the beginning of Haystack). それ以外の場合は、2文字目から始める場合は2、3文字目から始める場合は3、といった具合に指定します。StartingPosHaystackの長さを超えている場合、Haystackの末尾にある空の文字列から検索を開始します(通常、置換されない結果になります)。

負のStartingPosを指定すると、その位置で右からスタートする。例えば、-1は最後の文字から、-2はその次の文字から始まります。StartingPosHaystackの左端を越えようとした場合、Haystackの全てが検索される。

0を指定すると、Haystackの末尾、つまり最後の文字の右側の位置から開始します。これは、(?<=a)のようなゼロ幅のアサーションで使用することができます。

StartingPosの値にかかわらず、戻り値は常にHaystackの完全なコピーです。唯一の違いは、StartingPosが1の場合に起こるであろうことと比較して、その左側の多くが変更されていないかもしれないということです。

戻り値

型:文字列

この関数は、操作によって内容が置換されたバージョンのHaystackを返します。交換の必要がない場合は、Haystackはそのまま返却されます。

エラー

以下の場合、Errorがスローされます:

詳しくは、RegExMatchをご覧ください。

Options

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正規表現クイックリファレンス正規表現の吹き出しStrReplaceInStr

テキストデータの一般的なソース:FileReadDownloadA_ClipboardGUI Edit コントロール

一般的なRegExの例については、RegExクイックリファレンスをご覧ください。

「abc123xyz」を報告するのは、$が末尾にのみマッチングを許可しているからです。

MsgBox RegExReplace("abc123123", "123$", "xyz")

大文字小文字を区別しないオプションで一致したため、「123」を報告します。

MsgBox RegExReplace("abc123", "i)^ABC")

$1バックリファレンスによって「aaaXYZzzz」を報告する。

MsgBox RegExReplace("abcXYZ123", "abc(.*)123", "aaa$1zzz")

空文字列を報告し、ReplacementCountに2を格納します。

MsgBox RegExReplace("abc123abc456", "abc\d+", "", &ReplacementCount)