office.notes@misora05

本館ブログのうち,Office・Windwsがらみのネタ+@を抜き出したもの.月水金更新予定.

正規表現関数を作ってみよう!@Excel (2)

前回の続き.

misora05.hatenablog.com

今回は実際に正規表現関数を作成してみましょう.

なお,命名方法は,.NET FrameworkSystem.Text.RegularExpressions名前空間の皆様に倣うことにしましょう.

Regex.IsMatch

正規表現と一致する対象が入力文字列内で見つかったかどうかを示します。

これは簡単ですね.
パターンに一致しているかを判定するのはTestメソッドなので,それを呼び出しその戻り値を受け取るだけです.

Public Function RegEx_IsMatch(ByVal Subject As String _
                            , ByVal Pattern As String _
                            , Optional ByVal IgnoreCase As Boolean = False) As Boolean
    
    With re
        .Pattern = Pattern
        .IgnoreCase = IgnoreCase
        RegEx_IsMatch = .Test(Subject)
    End With
    
End Function

簡単ではありますが,IgnoreCaseプロパティのことは忘れないようにしましょうw

Regex.Replace

指定した入力文字列内で正規表現パターンに一致する文字列を、指定した置換文字列に置き換えます。

Public Function RegEx_Replace(ByVal Subject As String _
                            , ByVal Pattern As String _
                            , ByVal Replacement As String _
                            , Optional ByVal IgnoreCase As Boolean = False) As String
    
    With re
        .Pattern = Pattern
        .IgnoreCase = IgnoreCase
        .Global = True
        RegEx_Replace = .Replace(Subject, Replacement)
    End With
    
End Function

これも簡単ではありますが,Globalプロパティを TRUE に設定しておくのは忘れないようにしましょう.

Global プロパティの値は、文字列全体に検索が適用されると True、適用されないと False です。既定値は False です。

FALSE 設定時(=既定値)の挙動は,Excelの場合はむしろ直感に反するでしょうし,TRUE 固定でいいんじゃないかと思います.


まずは簡単な2パターンを作成してみた.

おまけ

正規表現関連の書籍というと,この手の「紙製鈍器」が目につきますが,

詳説 正規表現 第3版 正規表現技術入門 ――最新エンジン実装と理論的背景 (WEB+DB PRESS plus)

この手の「柔らかい」本もいくつかありますし,オフィスワーカーでも知っておいて損はない知識だと思うんですよね.
――これは私がOA事務から開発に入った人間だからかもしれませんが.

反復学習ソフト付き 正規表現書き方ドリル (WEB+DB PRESS plus) やさしい正規表現―オフィススイートで一歩進んだ文書処理

本当どうでもいいおまけ

正規表現で表すとこの文字列は~」って私が大真面目に解説してた時に,「なに?性器の表現がどうかしたって?」,っていうド直球のセクハラをかましたやつ*1が滅殺されますように‥!人が大真面目に解説してるときに何をやってるか!

*1:実在する.残念ながら.