waitregex

正規表現文字列を含む行を待つ。(バージョン 4.21以降)

waitregex <string1 with regular expression> [<string2 with regular expression> ...]

解説

Oniguruma の正規表現 が使用できます。
正規表現文字列のうち 1 つ以上を含む行(最大 511 文字)をホストから受信するか、タイムアウトが発生するまで MACRO を停止させる。正規表現文字列は最大 10 個まで指定できる。

システム変数 timeout か mtimeout が 0 より大きい場合、<timeout>.<mtimeout> 秒の時間がすぎるとタイムアウトが発生する。タイムアウトの値が 0 以下の場合は、タイムアウトは発生しない。

これらのコマンドの実行結果はシステム変数 result , inputstr, matchstr に格納される。変数 result の値の意味は以下のとおり。

意味
0 タイムアウト。どの文字列も来なかった。
1 <string1 with regular expression> を受信した。
2 <string2 with regular expression> を受信した。
n <stringn with regular expression> を受信した。n=1..10

変数 inputstr には受信した行が格納される。
変数 matchstr には最初にマッチしたパターンが格納される。
変数 groupmatchstr1〜groupmatchstr9 にはグループマッチしたパターンが格納される。

日本語等のマルチバイト文字列を待つ場合、事前にregexoptionで適切なエンコーディングを設定しておく必要がある。

timeout = 30
waitregex 'Longhorn' '.*@sai' 'Pentium\d+' 'TeraTermX{3}'
int2str s result
messagebox s 'result'
messagebox inputstr 'inputstr'
messagebox matchstr 'matchstr'

参照