電子書籍の厳選無料作品が豊富!

初めての質問です。
質問用にプログラムを次の通りに作りました。実行すると OK と表示しますが、これを、文章に応じて表示させたいのです。本例の場合は、曇り20度、湿度60% です。

つまり、正規表現でマッチした文字を変数に代入して、その変数を用いて、msgbox出力したいのですが、どの様にコード(マッチ文字の変数化)を記述すれば良いのでしょうか?
本例でいえば、曇りを変数xに、20を変数yに、60を変数zに取り込めるようにしたいのです。
質問用なので、プログラムの意味はこだわらないでください。
本番用では、"本日は曇り20度ですが、湿度60%でした。"は、関数の引数で可変の文章です。
質問が下手で済みません。よろしくお願いいたします。

【sample.vbsの内容】

if blnCheck("本日は曇り20度ですが、湿度60%でした。") then
msgbox "OK" '曇り20度、湿度60% と表示させたい
else
msgbox "NG"
end if

Function blnCheck(strLen)
Dim objRE
Set objRE = new RegExp
objRE.IgnoreCase = True
objRE.pattern = "^本.*(晴)|(曇り)|(雨)\d\d.*湿度\d\d.*"
blnCheck = objRE.Test(strLen)
Set objRE = Nothing
End Function

A 回答 (1件)

適切な正規表現を指定して、Submatchesを使ってください。



Dim ans
ans = check("本日は曇り20度ですが、湿度60%でした。")
if ans<>"" then
msgbox ans
else
msgbox "NG"
end if

Function check(target)
Dim re, match
Set re = new RegExp
re.IgnoreCase = True
re.pattern = "^本.*(晴|曇り|雨)(\d\d).*湿度(\d\d).*"
if re.Test(target) then
set match = re.Execute(target)(0)
check = match.SubMatches(0) & match.SubMatches(1) & "度、湿度" & match.SubMatches(2) & "%"
else
check = ""
end if
End Function
    • good
    • 0
この回答へのお礼

ありがとうございます。
期待通りのお答えを頂き、とても参考になりました。

お礼日時:2013/05/11 21:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!