ezRegreg
数日前に公開すると予告していたDLL、
それがこのezRegregです。
ネーミングセンスの無さは置いておいて、
名前から何となく分かると思いますが、
VB(A)で簡単に正規表現を扱うDLLです。
簡単というだけに、複雑な事は出来ませんが…
僕はいつもVBで正規表現で何かマッチさせる時、
次のようなコードを書きます。
Dim re as Object, mObj as Object Set re = CreateObject("VBScript.RegExp") re.Global = True re.IgnoreCase = True re.Pattern = "正規表現" Set mObj = re.Execute("対象文字列") マッチ文字列 = mObj.Item(0) Set re = Nothing
正規表現オブジェクトを用意し、
オブジェクトの設定をし、
処理をして別のオブジェクトへ代入、
そのオブジェクトから文字列として取り出す、
そんな感じだと思います。
なんか…面倒くさくないですか?(笑)
まぁ、クラスモジュールに記述して関数化して、
使う時にインスタンス化して使うとスッキリしますが、
うーん…。(笑)今まではそう使ってました。
で、心の片隅にソフトシンセを作りたい野望が残っているので、
C++で、正規表現を扱う関数のDLLを作ってみようと思った訳です。
文字列の扱いが、大変苦労しました。
しかし今回は、自力で何とかしました(笑)
VBが簡単と言われる理由が実感出来ました。
という事で、このブログのこの記事でしか公開しませんが、
中身を説明したいと思います(笑)
まず、DLLを使うという事で、
Declareステートメントで宣言して下さい。
(場合によってPublic及びPrivateを付加して下さい。)
'ezFound関数 Declare Function ezFound Lib "ezRegreg.dll" _ (ByVal str As String, ByVal regstr As String) As Integer 'ezMatch関数 Declare Function ezMatch Lib "ezRegreg.dll" _ (ByVal str As String, ByVal regstr As String, ByVal m As Integer) As String 'ezRep関数 Declare Function ezRep Lib "ezRegreg.dll" _ (ByVal str As String, ByVal regstr As String, ByVal repstr As String) As String
それではezFound関数から。
ezFound関数は、ある文字列に対し、
正規表現がマッチするか、しないかの真偽をしてくれます。
マッチする場合1を、しない場合は0を返します。
戻り値(0 or 1) = ezFound("文字列", "正規表現")
DLLの動作チェックツールも作りましたが、
こんな感じですね。
この場合、「半角英字が1文字以上続いてから、半角数字が一つある」
という事ですから、マッチします。
続いてezMatch関数。
こちらはマッチした文字列を取得する事が出来ます。
複数該当の場合、第3引数で何番目に一致したか指定できます。(0から数えます)
マッチしない場合は、文字列「no match!」を返します。
戻り値(マッチ文字列) = ezMatch("文字列", "正規表現", 何番目に一致したかの整数)
この場合、「jの後に半角数字が3つ」で「1番目(0から数えて)に一致」
ですので、j968が戻り値として返されます。
最後にezRep関数。
ezRep関数は、文字列のマッチした箇所を、指定した文字列に置換してくれます。
戻り値(置換後文字列) = ezRep("文字列", "正規表現", "置換文字列")
この場合、「何でも良い文字が二つあり、行末」ですので、
太郎がマッチします。
太郎に対し、第3引数で指定した、花子に置き換えられます。
よって山田花子が文字列として返されます。
…とまぁ、こんな感じなんですが、
詳しくはReadMeを読んで頂ければと思います(笑)
必要な方は使ってみて下さい。
但し、本ソフトウェアの使用により発生した、
いかなる損害に対しても私は責任を負いません(笑)
今のところ普通に動いてるので、問題はないと思いますが…。
あと、文中で出て来た動作チェックツールが欲しい方は、
別途連絡下さい(笑)(※要Excel)パッケージには同封してません。
ダウンロードはコチラから!
(予告なく削除する可能性もあります。)
http://d.hatena.ne.jp/Shinez/files/ezRegreg.zip?d=download
Win32API完璧マスタ―Visual C++プログラミング
- 作者: 土井滋貴,上田悦子,那須靖弘
- 出版社/メーカー: CQ出版
- 発売日: 2001/02
- メディア: 単行本
- 購入: 5人 クリック: 28回
- この商品を含むブログ (11件) を見る