忍者ブログ

Home > > UWSCで正規表現を使う

[PR]

  • 2024-04-28
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

Comments:

Trackback+Pingback:

Listed below are links to weblogs that reference
[PR] from 溺れる者はUWSCを掴め!

Home > > UWSCで正規表現を使う

Home > 実用スクリプト > UWSCで正規表現を使う

UWSCで正規表現を使う

  • 2011-12-31
  • 実用スクリプト

UWSCで正規表現を使う場合にはVBScript又はJScriptを使うことにになるのですが、UWSCから使うならVBScriptの方が扱い安いですかね。

という事で今回はVBScriptのRegExpを使ったサンプル

正規表現のパターンの書方に関しては詳しく説明しないので各自ご確認を

RegExpのプロパティには以下のプロパティがあります。
Patternプロパティ 正規表現で使用するパターン
IgnoreCaseプロパティ 大文字と小文字を区別する(デフォルト:False)
Globalプロパティ 文字列全体を検索する(デフォルト:False)
RegExpのメソッドには以下のメソッドがあります。
Executeメソッド Patternとマッチした結果をMatchesコレクションで返します。
Replaceメソッド Patternとマッチした結果をを置換文字列と置き換えます。
Testメソッド Patternとマッチした場合はTrueを返します。

Executeメソッドのサンプル

PUBLIC regvb = CreateOLEObj("VBScript.RegExp")

   //--sample
   //str="2012年1月1日~2012年1月30日"
   //Pattern="\d+年(\d+月\d+日)"
   //
   //Matches=regvb_Execute(str,Pattern)
   //for i=0 to Matches.Count-1
   //   Print Matches.item(i).Value
   //   Print Matches.item(i).SubMatches(0)
   //   Print Matches.item(i).FirstIndex
   //   Print Matches.item(i).Length
   //next
   
//--
Function regvb_Execute(str,Pattern,IgnoreCase=true,Global=true)
   regvb.IgnoreCase = IgnoreCase
   regvb.Global = Global
   regvb.Pattern=Pattern
   Matches = regvb.Execute(str)
   Result=Matches
Fend
Executeメソッドを実行して帰ってくる戻値Matchesコレクションは以下のプロパティがあります。
Countプロパティ Matchオブジェクトの個数
Itemプロパティ MatchオブジェクトをMatches.Item(数字)で返す
Matchオブジェクト(=Matches.Item(数字))には以下のプロパティとコレクションがあります。
Valueプロパティ マッチした文字列を返す。
Lengthプロパティ マッチした文字列の長さを返す。
FirstIndexプロパティ 最初にマッチに成功した位置を返す。先頭は0から。
SubMatchesコレクション 「()で括られた」パターングループにマッチしたコレクションを返す。

sampleを実行すると以下の結果になる

---------結果-------
2012年1月1日
1月1日
0
9
2012年1月30日
1月30日
10
10
------------------------

最初にマッチしたのは「2012年1月1日」でSubMatches(0)は「1月1日」文字位置は「0」で文字列の長さは9文字


Replaceメソッドのサンプル

PUBLIC regvb = CreateOLEObj("VBScript.RegExp")

	//--sample
	//str="2012年1月1日~2012年1月30日"
	//Pattern="\d+年"
	//Print regvb_Replace(str,Pattern,"2013年")

//--
Function regvb_Replace(str,Pattern,replStr,IgnoreCase=true,Global=true)	
	regvb.IgnoreCase = IgnoreCase
	regvb.Global = Global
	regvb.Pattern=Pattern
	str = regvb.Replace(str,replStr)
	Result=str
Fend

sampleを実行すると以下の結果になる

---------結果-------
2013年1月1日~2013年1月30日
------------------------


TestメソッドはMatches.countが0だと失敗、0以上だと成功という風にExecuteで代用できるので省略します。

Comments:0

Comment Form

Trackback+Pingback:

TrackBack URL for this entry
Listed below are links to weblogs that reference
UWSCで正規表現を使う from 溺れる者はUWSCを掴め!

Home > 実用スクリプト > UWSCで正規表現を使う

Search
Meta
Links
Feeds
PR
PR

Page Top