文字列中から正規表現パターンに一致する箇所を検索し、位置を返す
RegExMatch(Target, Pattern [, OutputVar = "", StartingPos = 1])
引数名 | 説明 |
---|---|
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の先頭から検索)。 |
Patternの最初に付加できるオプションの内、RegExMatch()のみで有効なものは以下の通りである。
RegExReplace()と共通のものについては、正規表現の項を参照。
Targetの先頭から数えた、パターンに一致する箇所の一番最初の出現位置。
文字列の先頭は「1」。
見つからなかった場合は「0」になる。
エラーで検索が行われなかった場合は、長さゼロの文字列になる。
正常に検索が行われた場合は、「0」。
エラーで検索が行われなかった場合は、以下の値になる。
RegExReplace(), InStr(), IfInString, StringGetPos, SetTitleMatchMode RegEx
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.