RegExMatch()

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

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

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

文字列中から正規表現パターンに一致する箇所を検索し、位置を返す。

RegExMatch(Target, Pattern [, OutputVar = "", StartingPos = 1])

Parameters[編集]

引数名 説明
Target 検索対象となる文字列
Pattern 検索する正規表現パターン。詳細は正規表現の項を参照。
オプションはパターンの前に )で区切って記述する(例: im)\.jpe?g$)
オプションがない場合は、 )は不要。(例: \.JPE?G$)
OutputVar ()などで囲まれた式集合マッチしたサブマッチ文字列を格納する変数を指定する。
この変数自体には、正規表現全体がマッチした内容が格納される。
この変数の名前のあとに、 (の出現順に対応した番号を付けた名前の変数に、その ()内の正規表現に一致した文字列が格納される。
マッチしなかったものについては、長さ0の文字列になる。
例えば、 RegExMatch("2006-11-06","(\d\d\d\d)-(\d\d)-(\d\d)",$)とすると、 $変数には 2006-11-06が、 $1変数には 2006が、 $2変数には 11が、 $3変数には 06が格納される。
名前付き捕獲式集合を使用した場合は、順番を表す数字の代わりにその名前が使われる。この場合、番号自体は増やされるが、番号に対応する変数には値が格納されない。
例えば、 RegExMatch("2006-11-06","(?P<Year>\d{4})-(\d{2})-(\d{2})",$)とすると、 $Year変数には 2006が、 $2変数には 11が、 $3変数には 06が格納される。 $1変数には何の変化も起こらず、前の値が維持される。
StartingPos Target内での検索を開始する位置。先頭は 1
Targetの文字数より大きい値を指定した場合は、空の文字列(Targetの最後の0文字の範囲)に対し検索が行われる(通常はなにもマッチしない)。
0以下の値を指定した場合は、文字列の末尾から指定文字数分の範囲が検索される。
例えば、 0を指定した場合は、文字列の最後の1文字だけが、 -1を指定した場合、後ろの2文字が検索される。
Targetの長さを超える場合は、Target全体が検索される。
省略時は 1(Targetの先頭から検索)。

RegExMatch()固有のオプション[編集]

Patternの最初に付加できるオプションの内、RegExMatch()のみで有効なものは以下の通りである。
RegExReplace()と共通のものについては、正規表現の項を参照。

P OutputVar変数群に格納される情報を、マッチした文字列自体ではなく、文字列の出現位置と長さにする。
OutputVar自体は、正規表現全体がマッチした長さになる。
各サブマッチ文字列のTarget先頭から数えた位置が OutputVarPos1 OutputVarPos2などに、各サブマッチ文字列の長さが OutputVarLen1 OutputVarLen2などに格納される。
名前付き捕獲式集合を使用した場合は、 OutputVarPosYear OutputVarLenYearなどに格納される。
マッチしなかったものについては、位置・サイズ共に 0になる。
例えばRegExMatch("2006-11-06","P)(?P<Year>\d{4})-(\d{2})-(\d{2})",Match)とすると、 Matchには 10が、 MatchPosYear1が、 MatchLenYear4が、 MatchPos26が、 MatchLen22が、 MatchPos39が、 MatchLen32が格納される。

Return Value[編集]

Targetの先頭から数えた、パターンに一致する箇所の一番最初の出現位置。
文字列の先頭は 1
見つからなかった場合は 0になる。
エラーで検索が行われなかった場合は、長さゼロの文字列になる。

ErrorLevel[編集]

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

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

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

Related[編集]

RegExReplace(), InStr(), IfInString, StringGetPos, SetTitleMatchMode RegEx

AHKL Regular Expression Callouts

Example(s)[編集]

FoundPos := RegExMatch("xxxabc123xyz", "abc.*xyz") ; Returns 4, which is the position where the match was found.
FoundPos := RegExMatch("abc123123", "123$")        ; Returns 7 because the $ requires the match to be at the end.
FoundPos := RegExMatch("abc123", "i)^ABC")         ; Returns 1 because a match was achieved via the case-insensitive option.
FoundPos := RegExMatch("abcXYZ123", "abc(.*)123", SubPat) ; Returns 1 and stores "XYZ" in SubPat1.
FoundPos := RegExMatch("abc123abc456", "abc\d+", "", 2)   ; Returns 7 instead of 1 due to StartingPos 2 vs. 1.