Function Reference

StringRegExp

文字列が与えられた正規表現パターンに一致するかどうかを調べます。

StringRegExp ( "test", "pattern" [, flag ] [, offset ] ] )

 

パラメータ

test 調べる文字列
pattern 比較する正規表現
flag [オプション] 関数の動作の仕方を指定する数字。詳細は下記を参照。デフォルトは0。
offset [オプション] 文字列調査開始位置(1以上)。デフォルトは1。


フラグ
0 1(一致) 、0(不一致)を返します
1 一致情報の配列を返します。
2 完全一致(Perl/PHP スタイル)を含む一致情報の配列を返します。
3 グローバルマッチの配列を返します。
4 完全一致(Perl/PHP スタイル)を含むグローバルマッチの配列を格納した配列を返します。

 

返し値

Flag = 0 :
@Error 意味
2 不正なパターン。@Extended = パターン内のエラー位置。


Flag = 1、2 :
@Error 意味
0 配列が有効。@Extendedを使って次のオフセット位置を調べてください。
1 配列が無効。一致なし。
2 不正なパターン、配列が無効。@Extended = パターン内のエラー位置。


Flag = 3、4 :
@Error 意味
0 配列が有効。
1 配列が無効。一致なし。
2 不正なパターン、配列が無効。@Extended = パターン内のエラー位置。

 

注意

flagパラメータには5つの値(0から4)のうちの1つを使用できます。 0の場合、パターンが見つかったどうかによってTrue(1)、False(0)のいずれかを返します。 1と2の場合、最初に見つかったものを配列で返します。 3と4の場合、複数の一致結果を見つけ全ての一致テキストを配列に代入します。 2と4の場合、flag 1と3によって取得できるキャプチャーグループだけでなく完全一致テキストを最初のレコードに含めます。.

正規表現表記法は検索する文字列のパターンをコンパクトに指定するための方法です。 正規表現は文字列で、ターゲット文字列を構成する通常の文字と、ターゲット文字列のパターンを表す特別な意味を持つ文字からできています。 AutoItの正規表現は通常、大文字小文字を区別します。

正規表現は次に示す正規表現指定子の組み合わせから構成されます。もし正規表現指定子を含まない場合、検索文字列そのものに一致するもののみが検索されます。

反復文字(*, +, ?, {...})は、可能な限り大きなセットとのマッチングを試みます。これによって後ろの文字との一致が可能です。 クエスチョンマークが直後に付く場合、もっとも小さいパターンを見つけます。これによって後ろの文字との一致が可能です。

グループのネスト(入れ子構造)が使用できます。非キャプチャーグループを除く全てのグループは内側のグループから結果の配列に代入されます。

完全な説明はこちら

警告: 不正な正規表現は見かけ上の無限ループを生み出しCPUに負荷をかけます。また場合によってはクラッシュを引き起こします。

マッチング用文字

[ ... ] セット内の任意の文字との一致。例:[aeiou]は全ての小文字の母音と一致します。 連続するセットは開始文字と終了文字をダッシュでつないで定義します。例:[a-z]は全ての小文字と一致します。 ダッシュ(-)を検索する場合は、セットの最初、または最後の文字として指定します。 角カッコを検索する場合は、セットの最初の文字として指定します。 例:[][]は [ または ] に一致します。 特殊な意味をもつ文字はセット内では特殊な意味をもつ文字として扱われません。ただし例外的に\\\^\-\[\]はエスケープされているものとしてセット内で扱われます。 .
[^ ... ] セット内の任意の文字以外との一致。例:[^0-9]は数字以外の全ての文字と一致します。キャレット(^)を検索する場合はセット開始直後に置くか、エスケープ(\^)します。 /td>
[:class:] 指定された文字クラスとの一致。有効なクラス:alpha(任意のアルファベット文字)、alnum(任意の英数字)、lower(任意の小文字)、upper (任意の大文字)、digit (0-9の任意の数字)、xdigit (0-9、A-F、a-f の任意の16進数数字)、space (任意のホワイトスペース文字)、blank (スペースまたはタブ)、print (任意の印刷可能文字)、graph (スペースを除く任意の印刷可能文字)、cntrl (任意の制御文字[ascii 127 、32以下])、punct (任意の句読点文字)。また[0-9]は[[:digit:]]と等しいです。  
[^:class:] 指定された文字クラス以外との一致。ただし最初の文字だけです。
( ... ) グループ。グループ内の要素は並び順に扱われ、繰り返し処理時に一緒に取り扱われます。例:(ab)+は"ab"、"abab"に一致しますが"aba"には一致しません。またフラグによっては後方参照、関数の返す配列に使用するために一致したテキストを保持します。
(?i) 大文字小文字非区別フラグ。グループとしては動作しません。正規表現エンジンが大文字小文字の区別をしないように設定します。
(?-i) (デフォルト)大文字小文字区別フラグ。グループとしては動作しません。正規表現エンジンが大文字小文字の区別をするように設定します。  
(?: ... ) 非キャプチャーグループ。一致文字を配列に記録しない、後方参照に使用しない以外は通常のグループと同じです。
(?i: ... ) 大文字小文字非区別、非キャプチャーグループ。大文字小文字の区別をしない以外は通常の非キャプチャーグループと同じです。
(?-i: ... ) 大文字小文字区別、非キャプチャーグループ。大文字小文字の区別をする以外は通常の非キャプチャーグループと同じです。
(?m) ^と$はデータ内の改行に一致します。
(?s) . は改行を含む任意の文字と一致します。(デフォルトでは"."は改行とは一致しません)
(?x) ホワイトスペースと#コメントを無視します。
(?U) 強欲な量指定子の反転。
. 任意の文字と一致(改行文字を除く)。
| OR。式の片方またはもう片方との一致。
\ 特殊文字のエスケープ(実際の文字との一致)または特殊文字タイプの導入(下記参照)。
\\ バックスラッシュ(\)に一致。
\a アラーム。BEL文字 (chr(7))。
\A 文字列開始位置でのみ一致。
\b 単語境界位置でのみ一致。
\B 非単語境界位置でのみ一致。
\c 次の文字に基づく制御文字に一致。例えば\cMはctrl-Mに一致する。
\d 任意数字(0-9)に一致。
\D 任意非数字に一致。
\e エスケープ文字(chr(27))に一致。
\E ケース終了。
\f フォームフィード文字(chr(12))に一致。
\h 任意の水平ホワイトスペース文字。
\H 任意の非水平ホワイトスペース文字。
\n ラインフィード(@LF, chr(10))に一致。
\Q \Eまでメタ文字パターンの引用(無効)。
\r キャリッジリターン(@CR, chr(13))に一致。
\s 任意のホワイトスペース文字に一致。ホワイトスペース文字:Chr(9)からChr(13)の水平タブ、垂直タブ、フォームフィード、キャリッジリターンと標準スペース( Chr(32) )。
\S ホワイトスペース文字以外に一致。
\t タブ文字(chr(9))に一致。
\v 任意の垂直ホワイトスペース文字。
\V 任意の非垂直ホワイトスペース文字。
\w 任意の"単語"文字に一致。a-z、A-Z、0-9またはアンダーバー(_)。
\W 非単語文字に一致。
\### 指定されたasciiコードまたは後方参照のasciiコードと対応する文字に一致。8進数で3桁まで。
見つかった場合、後方参照に一致。指定された先のグループ番号と正確に一致します。例えば([:alpha:])\1は二重文字(ダブルレター)と一致します。
\x## 16進数で与えられたasciiコードと対応する文字に一致。2桁まで。
\z 文字列終了位置でのみ一致。
\Z 文字列終了位置、改行文字直前でのみ一致。

反復文字

{x} 直前の文字、セット、グループをx回繰り返し。
{x,} 直前の文字、セット、グループを最小x回繰り返し。
{0,x} 直前の文字、セット、グループを最大x回繰り返し。
{x, y} 直前の文字、セット、グループをx回からy 回繰り返し。
* 直前の文字、セット、グループを0回以上繰り返し。{0,}と同じ。
+ 直前の文字、セット、グループを1回以上繰り返し。{1,}と同じ。
? 直前の文字、セット、グループが0回または1回出現。{0, 1}と同じ。
? (反復文字の後ろ) 最大の一致の代わりに最小の一致を見つけます。

文字クラス

[:alnum:] 文字と数字
[:alpha:] 文字
[:ascii:] 文字コード 0-127
[:blank:] スペースとタブ
[:cntrl:] 制御文字
[:digit:] 10進数の数字 (\dと同じ)
[:graph:] スペースを除く印字文字。
[:lower:] 小文字
[:print:] スペースを含む印字文字。
[:punct:] 文字と数字を除く印字文字。
[:space:] ホワイトスペース(\sとは異なる。\sはVT: chr(11)を含む)
[:upper:] 大文字
[:word:] "単語"文字(\wと同様)
[:xdigit:] 16進数

 

関連

StringInStr, StringRegExpReplace

 


;オプション1, オフセット使用
$nOffset = 1
While 1
    $array = StringRegExp('<test>a</test> <test>b</test> <test>c</Test>', '<(?i)test>(.*?)</(?i)test>', 1, $nOffset)
   
    If @error = 0 Then
        $nOffset = @extended
    Else
        ExitLoop
    EndIf
    for $i = 0 to UBound($array) - 1
        msgbox(0, "RegExp Test with Option 1 - " & $i, $array[$i])
    Next
WEnd


;オプション2, シングルリターン, php/preg_match()スタイル
$array = StringRegExp('<test>a</test> <test>b</test> <test>c</Test>', '<(?i)test>(.*?)</(?i)test>', 2)
for $i = 0 to UBound($array) - 1
    msgbox(0, "RegExp Test with Option 2 - " & $i, $array[$i])
Next


;オプション3, グローバルリターン, 以前のAutoItスタイル
$array = StringRegExp('<test>a</test> <test>b</test> <test>c</Test>', '<(?i)test>(.*?)</(?i)test>', 3)

for $i = 0 to UBound($array) - 1
    msgbox(0, "RegExp Test with Option 3 - " & $i, $array[$i])
Next


;オプション4, グローバルリターン php/preg_match_all()スタイル
$array = StringRegExp('F1oF2oF3o', '(F.o)*?', 4)

for $i = 0 to UBound($array) - 1

$match = $array[$i]
    for $j = 0 to UBound($match) - 1
        msgbox(0, "cRegExp Test with Option 4 - " & $i & ',' & $j, $match[$j])
    Next
Next