RegExReplace()

提供: AutoHotkey Wiki
移動: 案内検索

実行制御 | GUI表示 | 演算・変数 | メモリ・DLL操作 | 文字列操作 | キーボード | マウス | シェル | ウィンドウ | ウィンドウグループ
ステータスバー | コントロール | サウンド | ファイル | INIファイル | レジストリ | 環境変数 | AutoHotkey | その他 | 設定関係 | オブジェクト

RegExReplace() [v1.0.45+][編集]

文字列中の正規表現パターンに一致する箇所を別の文字列に置換して返す。

RegExReplace(Target, Pattern [, Replacement = "", OutputVarCount = "", Limit = -1, StartingPos = 1])

Parameters[編集]

引数名 説明
Target 置換対象となる文字列
Pattern 検索・置換する正規表現パターン。詳細は正規表現の項を参照。
オプションはパターンの前に )で区切って記述する(例: im)\.jpe?g$)
オプションがない場合は、 )は不要。(例: \.JPE?G$)
Replacement パターンに一致した箇所に代わりに挿入する文字列を指定。
以下のものが含まれている場合、該当する文字列が埋め込まれる。
$0 正規表現全体にマッチした文字列
$1...$9
${1}...${99}
(...)でグループ化された正規表現に最後にマッチした文字列
(の記述された順番に 1から番号が振られていく
${name} (?P<name>...)で名前付きグループ化された正規表現に最後にマッチした文字列
$U{name} nameで指定されたサブマッチ文字列のアルファベットを全て大文字に変換したもの
nameには0~99の数字も使用できる。
$L{name} nameで指定されたサブマッチ文字列のアルファベットを全て小文字に変換したもの
$T{name} 各サブマッチ文字列内の各単語の先頭のアルファベットを大文字に、残りのアルファベットを小文字に変換したもの
$$ 単なる $
ただし、上述のサブマッチ表現と誤認識される可能性のないものは、このようにエスケープしなくてもよい。
OutputVarCount 置換が行われた数を格納する変数を指定する。
Limit 置換を行う回数の上限を指定する。
-1を指定すると、存在する全ての一致箇所が置換される。 1以上の整数を指定すると、先頭から指定した数までの一致箇所のみが置換される。
StartingPos Target内での検索を開始する位置。先頭は 1
Targetの文字数より大きい値を指定した場合は、空の文字列(Targetの最後の0文字の範囲)に対し検索・置換が行われる(通常はどこも置換されない)。
0以下の値を指定した場合は、文字列の末尾から指定文字数分の範囲が検索される。
例えば、 0を指定した場合は、文字列の最後の1文字だけが、 -1を指定した場合、後ろの2文字が検索される。
Targetの長さを超える場合は、Target全体が検索される。
省略時は 1(Targetの先頭から検索)。

返り値[編集]

置換した後の文字列
何らかのエラーが発生した場合は、Targetがそのまま返る。

ErrorLevel[編集]

AHKL [v1.1.04+] この関数は失敗した場合に例外をスローすることができる。("一致なし"と混同しないように) 詳細は実行時エラーを参照。

正常に検索・置換が行われた場合は、 0
エラーで検索・置換が行われなかった場合は、以下の値になる。

Compile error N at offset M:Description 正規表現の文法エラー。
Nはエラー番号、Mは問題の発生した箇所(Patternの先頭が 1)、Descriptionは簡単な説明。
その他の負の数値 マッチ処理中に発生したエラー。
正規表現自体は正しいが、処理に必要なメモリが確保しきれないなどの問題があったときに発生する。

Related[編集]

RegExMatch(), SetTitleMatchMode RegEx, StringReplace, InStr()

AHKL Regular Expression Callouts

Example(s)[編集]

NewStr := RegExReplace("abc123123", "123$", "xyz")  ; Returns "abc123xyz" because the $ allows a match only at the end.
NewStr := RegExReplace("abc123", "i)^ABC")  ; Returns "123" because a match was achieved via the case-insensitive option.
NewStr := RegExReplace("abcXYZ123", "abc(.*)123", "aaa$1zzz")  ; Returns "aaaXYZzzz" by means of the $1 backreference.
NewStr := RegExReplace("abc123abc456", "abc\d+", "", ReplacementCount)  ; Returns "" and stores 2 in ReplacementCount.