matches

正規表現で検索した複数の結果を取得する

matches p1,p2,p3,p4,p5,p6

p1:結果を受け取る変数
p2:検索される文字列
p3:検索する文字列
p4(0):大文字と小文字を区別するなら1
p5(0):最初の結果だけを取得するなら1
p6(0):全体を一つの行と見なすなら1

(プラグイン / モジュール : mod_regexp)

解説

p2の文字列からp3に一致した複数の結果をサブマッチを含めて一度に取得します。
p3には正規表現のパターンを指定します。
p4を1にすると大文字と小文字を区別します。0や省略した場合は区別しません。
p5を1にすると最初に一致した結果だけを取得します。0や省略した場合は全ての結果を取得します。
p6を1にするとメタ文字 ^ と $ が改行直後・直前に対応しません。0や省略した場合は対応します。

p1の変数は初期化され、結果はp1の配列にセットされます。
一番目に一致した文字列はp1(0)に、二番目に一致した文字列はp1(1)に格納されます。
さらに、一番目に一致した文字列のなかの一番目のサブマッチはp1(0,1)に、二番目のサブマッチはp1(0,2)に格納されます。
statに一致した文字列の数がセットされ、0なら一つも一致していないことになります。
サブマッチの数はlength2を使って調べられます。

正規表現のパターンについてはmatchの項目を参照してください。

サンプル

#include "mod_regexp.as"
a={"
	太郎:算数=50,国語=100,社会=70
	一郎:算数=30,国語=50,社会=60
	花子:算数=60,国語=40,社会=50
"}
matches b,a,"(.*):算数=(\\d+),国語=(\\d+),社会=(\\d+)"
repeat stat
	mes b(cnt)
	mes "\t"+b(cnt,1)+"の総得点="+(0+b(cnt,2)+b(cnt,3)+b(cnt,4))
loop

 ;-------------結果------------
 ;太郎:算数=50,国語=100,社会=70
 ;	太郎の総得点=220
 ;一郎:算数=30,国語=50,社会=60
 ;	一郎の総得点=140
 ;花子:算数=60,国語=40,社会=50
 ;	花子の総得点=150

関連項目

match正規表現で検索して最初に一致した文字列を返す(mod_regexp)
submatch正規表現で検索して最初に一致したサブマッチ文字列を返す(mod_regexp)
replace正規表現で文字列の置換を行う(mod_regexp)

サンプル逆引き (1)

comtest8.hsp

情報

プラグイン / モジュールmod_regexp
備考Internet Explorer 5.5 以上が必要
グループ正規表現検索命令
ヘッダファイルcommon\mod_regexp.as