正規表現と指定された文字列のマッチングを行い、マッチした場合はTrue、マッチしなかった場合はFalseを返します。
- 構文
- Boolean = reTest( str, Pattern, [IgnoreCase, Global] )
- 引数
- str
- 正規表現による検索の対象となる文字列
- Pattern
- 正規表現で使用するパターンを設定
- IgnoreCase
- 大文字・小文字を区別しない場合はTrue、区別する場合はFalse
- Global
- 文字列全体を検索する場合はTrue、しない場合はFalse
- 戻値
- 正規表現にマッチするかどうか
プログラム
//////////////////////////////////////////////////
// 【引数】
// str : 正規表現による検索の対象となる文字列
// Pattern : 正規表現で使用するパターンを設定
// IgnoreCase : 大文字・小文字を区別しない場合はTrue、区別する場合はFalse
// Global : 文字列全体を検索する場合はTrue、しない場合はFalse
// 【戻値】
// 正規表現にマッチするかどうか
//////////////////////////////////////////////////
FUNCTION reTest(str, Pattern, IgnoreCase = TRUE, Global = TRUE)
DIM re = CREATEOLEOBJ("VBScript.RegExp")
re.Pattern = Pattern
re.IgnoreCase = IgnoreCase
re.Global = Global
RESULT = re.Test(str)
FEND
入力値のチェック
reTest関数は、INPUT関数で入力された値のチェックに使うことができます。
正規表現にマッチするかしないかで処理を分けることができます。
IFB reTest(INPUT(“数値を入力”), “\d+”) THEN
PRINT “数値です。”
ELSE
PRINT “数値ではありません。”
ENDIF
数値が入力されるまでインプットボックスを繰り返し表示します。正規表現にマッチする文字列を入力しない限り次の処理に進まないので注意。
REPEAT
SLEEP(0.100)
UNTIL reTest(INPUT(“数値を入力”), “\d+”)
プログラム実行例
数値から月の異名を求める
DIM month[12] = "睦月", "如月", "弥生", "卯月", "皐月", "水無月", "文月", "葉月", "長月", "神無月", "霜月", "師走"
DIM str = INPUT("1〜12の数値を入力してください。")
IFB reTest(str, "[1-9]|1[0-2]") THEN
PRINT month[str- 1]
ELSE
PRINT "1〜12の数値を入力してください。"
ENDIF
//////////////////////////////////////////////////
// 【引数】
// str : 正規表現による検索の対象となる文字列
// Pattern : 正規表現で使用するパターンを設定
// IgnoreCase : 大文字・小文字を区別しない場合はTrue、区別する場合はFalse
// Global : 文字列全体を検索する場合はTrue、しない場合はFalse
// 【戻値】
// 正規表現にマッチするかどうか
//////////////////////////////////////////////////
FUNCTION reTest(str, Pattern, IgnoreCase = TRUE, Global = TRUE)
DIM re = CREATEOLEOBJ("VBScript.RegExp")
re.Pattern = Pattern
re.IgnoreCase = IgnoreCase
re.Global = Global
RESULT = re.Test(str)
FEND
- 結果
INPUT:3>7 文月
解説
- 1行目
- 月の異名を配列に格納
DIM month[12] = "睦月", "如月", "弥生", "卯月", "皐月", "水無月", "文月", "葉月", "長月", "神無月", "霜月", "師走"
- 3行目
- インプットボックスを表示する。
DIM str = INPUT("1〜12の数値を入力してください。")
- 5-9行目
IFB reTest(str, "[1-9]|1[0-2]") THEN PRINT month[str- 1] ELSE PRINT "1〜12の数値を入力してください。" ENDIF
- 条件
- 正規表現を使い入力された値が1〜12の整数かどうか。
- [1-9]|1[0-2]
- 1~9の整数
- [1-9]|1[0-2]
- 10~12の整数
- [1-9]|1[0-2]
- 「1〜9の整数」または「10~12の整数」→「1〜12の整数」
- TRUE(1~12の整数ならば)
- month[0]に1月、month[1]に2月の異名が格納されているので、「入力された数値-1」番目に格納されている文字列を出力。この例の場合入力値が「7」なので、「month[6]」の「文月」を出力します。
- FALSE(それ以外ならば)
- 「1〜12の数値を入力してください。」を出力。