reTest

タグ:

正規表現と指定された文字列のマッチングを行い、マッチした場合は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
  1. INPUT
  2. reTest
結果
INPUT:3>7
文月
解説
  1. 1行目
    DIM month[12] = "睦月", "如月", "弥生",  "卯月",  "皐月", "水無月", "文月",  "葉月",  "長月",  "神無月", "霜月", "師走"
    月の異名を配列に格納
  2. 3行目
    DIM str = INPUT("1〜12の数値を入力してください。")
    インプットボックスを表示する。
  3. 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の数値を入力してください。」を出力。

関連記事

isDate
isDate関数は、引数が有効な日付として認識できる場合はTrue、それ以外の場合はFalseを返します。
reExecute
正規表現検索を行います。
reReplace
正規表現置換を行います。