2019年1月11日金曜日

番外編:Excel VBAで正規表現

VBAで正規表現を使ってみるテスト

SubMatchをつかって、グループ化した正規表現にマッチする文字列を拾い出す

Sub RegExpr()
'正規表現のテスト
'正規表現をグループ化して、submatchで取り出す
    '正規表現を使うときに使う変数類
    Dim RE As Object
    Dim Match, Matches, Matches2

    Dim STR As String
    Dim i As Integer

    Set RE = CreateObject("VBScript.RegExp")

    STR = "aaa000bbb111"

    RE.Pattern = "(^.)(..)..(.+$)"
    RE.ignorecase = True
    RE.Global = True

    Set Matches = RE.Execute(STR)
    Debug.Print Matches.Count
    Debug.Print Matches.Item(0)
    If Matches.Count > 0 Then
    
        Set Matches2 = Matches(0).SubMatches
        Debug.Print Matches2.Count
        For i = 0 To Matches2.Count - 1
            Debug.Print Matches2(i)
        Next
    
    End If

End Sub


これの実行結果は、以下。イミディエイトウィンドウに出力されます。
     1 
    aaa000bbb111
     3 
    a
    aa
    0bbb111


最初の1はDebug.Print Machtes.Countの出力で、RE.Patternで与えているパターン全体にマッチした回数が1であることを示しています。次の行は、与えたパターンでパターンマッチを行ってマッチした文字列全体です。

括弧でくくられた文字列グループにマッチした文字列は

set Matches2 = Matches(0).SubMatches

で取得され、Matches2コレクションに格納されます。これをFor Next文で取り出しています。

次の3は括弧でくくられた文字列グループ何個にマッチしたかを示しています。Debug.Print Matches2.Countの出力です。

(^.)は行頭の1文字、(..)は行頭の1文字に続く2文字、..で2文字置いて(.+$)で1文字以上で行末まで続く任意の文字にマッチして、それがSubMatchに格納されます。

2018年5月11日金曜日

ひとまず完結のご挨拶

ご挨拶


2018年2月から始めたこのブログには、2018年1月中旬から約2週間、集中的に取り組んだプログラミング言語C#の学習の足跡を35回に渡って記してきました。

本来なら、こういった内容のものは、Qiitaあたりに書いて、現役プログラマに揉まれるべきなのかもしれませんが、そこまで臨戦体制的なものではなく、自分が覚えておく為の記録の意味合いで書いて来ました。

そもそも、気が弱いのであそこに何か書くのは無理です(笑)

C#学習のそもそもの発端は、最初のご挨拶にも記したとおり、お仕事としてC#でプログラム開発が出来ないか、という打診を頂いたことでした。

残念ながらお仕事にはなりませんでしたが、2週間という短い期間で、Windows環境で動くGUIアプリケーションを書くことが出来るようになったのは大きな成果と自分では思っています。

今回、当初の目標仕様を満足するプログラムの作成の完了まで来ましたので、記事の更新はこれで一段落ということにします。しかし、今後も色々なソフトウエア開発のお勉強や研究をすることはあると思いますので、その際にはこのブログに足跡を残していきたいと考えています。

お付き合いいただき、ありがとうございました。そして、今後ともよろしくお願いいたします。

筆者:冨樫伸也

今までの成果を全部入れて、いよいよプログラム完成です

前回の記事で、Form(Form1)上のPictureBox(pictureBox1)にマウスの動きに合わせて動く図形(丸)を描くことが出来ました。

ここまで来れば、PictureBoxの中に縦又は横の直線を描いて、マウスの動きに合わせて動かすのは難しいことではありません。出口はもうすぐです。