正規表現関数を作ってみよう!@Excel (2)
前回の続き.
今回は実際に正規表現関数を作成してみましょう.
なお,命名方法は,.NET FrameworkのSystem.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パターンを作成してみた.
おまけ
正規表現関連の書籍というと,この手の「紙製鈍器」が目につきますが,
この手の「柔らかい」本もいくつかありますし,オフィスワーカーでも知っておいて損はない知識だと思うんですよね.
――これは私がOA事務から開発に入った人間だからかもしれませんが.
本当どうでもいいおまけ
「正規表現で表すとこの文字列は~」って私が大真面目に解説してた時に,「なに?性器の表現がどうかしたって?」,っていうド直球のセクハラをかましたやつ*1が滅殺されますように‥!人が大真面目に解説してるときに何をやってるか!
*1:実在する.残念ながら.