.NETで正規表現を用い、一致した値があるかどうか
を調査する関数はRegexクラス(System.Text.RegularExpressions)
のIsMatchを使用することで行える。
IsMatchの引数には、対象文字列と正規表現のパターンを指定する。
戻り値としては単純にBoolean型が返ってくる。
例)
(System.Text.RegularExpressions.)Regex.IsMatch("A","[a-zA-Z]+")
戻り値:True
上記の例は単純に指定した文字列が英字(大小文字)かどうかを判断する
ものである。
対象の文字列が指定した正規表現のパターンに当てはまるか否かを
判断するのはIsMatchだが、正規表現のパターンに当てはまった値を
指定した文字に置換するというものもある。
置換を行うにはReplaceを用いて行う。
引数はString型のReplaceとほぼ一緒で、対象文字列の部分が正規表現
のパターンを指定するようになっている。
例)
Regex.Replace("Iロベックス","[a-zA-Z]+","ア")
上記の例は対象文字列に英字(大小文字)があった場合、「ア」に
変換するというものである。
正規表現を用いたReplaceはかなり使えるような気がするが、余り
使いどころは少ない。ただ、存在を知っていれば何かと役に立つ
のではないだろうか?
コメント (1)
.netの正規表現のすごいところは、match時の callbackを設定できるところじゃないですかね。
これを使うと単純な置換ではなく、
・社員番号がアルファベットで始まっていれば派遣テーブルから、数値のみの場合は社員テーブルから取得した社員名を付け足す。
001024 ⇒ 001024:山田タロウ, X9970 ⇒ X9970:(派遣)覇健太郎
・コードが 13桁の場合は ISBN13で 10桁の場合は ASINで、AmazonWebserviceをクエリして書籍のタイトルを取ってきて置き換える。
・再帰的な置換をする。
dict("<!--##dir##-->")="c:\confdir\": dict("<!--##file##-->")="<!--##dir##-->hoge.txt" 'みたいな定義の展開
なんてな『複雑で動的な結果への置換』でも、見た目は“置換”の1行で書けてしまうのですな。すげー。
投稿者: 市川 | 2007年8月23日 14:26