正規表現応用

Similar documents
Socketクラス

正規表現

正規表現概要

ICONファイルフォーマット

プロセス間通信

ファイル操作

グラフィックス

ファイル操作-インターネットキャッシュ

ハッシュテーブル

プラグイン

ListViewコントロール

データアダプタ概要

Userコントロール

VB.NET解説

このルールをそのまま正規表現として書くと 下記のようになります ^A[0-9]{2}00[0-9]{3}([0-9]{2})?$ ちょっと難しく見えるかもしれませんが 下記のような対応になっています 最初 固定 年度 固定 通番 ( 枝番 ) 最後 ルール "A" 数字 2 桁 0 を 2 桁 数字

VB 資料 電脳梁山泊烏賊塾 音声認識 System.Speech の利用 System.Speech に依るディクテーション ( 音声を文字列化 ).NetFramework3.0 以上 (Visual Studio 2010 以降 ) では 標準で System.Speech が用意されて居るの

ファイル監視

ファイル操作-バイナリファイル

Visual Basic 資料 電脳梁山泊烏賊塾 コレクション初期化子 コレクション初期化子 初めに.NET 版の Visual Basic では 其れ迄の Visual Basic 6.0 とは異なり 下記の例の様に変数宣言の構文に 初期値を代入する式が書ける様に成った 其の際 1 の様に単一の値

PYTHON 資料 電脳梁山泊烏賊塾 PYTHON 入門 関数とメソッド 関数とメソッド Python には関数 (function) とメソッド (method) が有る モジュール内に def で定義されて居る物が関数 クラス内に def で定義されて居る物がメソッドに成る ( 正確にはクラスが

ブロック パニック

ブロック崩し風テニス

構造体

ルーレットプログラム

NotifyIconコントロール

正規表現詳細

ウィンドウ操作 応用

文字列操作と正規表現

回文作成支援プログラム

Java Scriptプログラミング入門 3.6~ 茨城大学工学部情報工学科 08T4018Y 小幡智裕

回文作成支援プログラム

VB実用⑦ エクセル操作Ⅰ

モグラ叩きプログラム

DAOの利用

相性占いプログラム

バスケットボール

回文作成支援プログラム

Microsoft PowerPoint - vp演習課題

スレッド操作 タイマー

.NETプログラマー早期育成ドリル ~VB編 付録 文法早見表~

Case 0 sqlcmdi.parameters("?tencode").value = Iidata(0) sqlcmdi.parameters("?tenname").value = Iidata(1) 内容を追加します sqlcmdi.executenonquery() Case Else

With sqlda sqlda に SelectCommand を追加.SelectCommand = New MySqlCommand() With.SelectCommand.CommandType = CommandType.Text.CommandText = "select * from

Microsoft Excel操作

メール送信

TEXTOS-S: 検索 置換 連立検索置換式を使って 資料をマークし または変形します マークと 変形を同時にすることも可能です 検索式にはリテラル ( 文字列そのもの ) ワイルドカード 正規表現が選択できます 上のテキストボックスに検索式を直接書き込むときは [Ctrl]+[Enter] を押

万年暦プログラム

LogisticaTRUCKServer-Ⅱ距離計算サーバ/Active-Xコントロール/クライアント 概略   

PYTHON 資料 電脳梁山泊烏賊塾 PYTHON 入門 文字列 文字列リテラル プログラムの中で文字列を表す方法は幾つか有るが 基本的な方法は下記の 2 種で有る 対象と成る文字の集まりをダブルクオーテーション ( " ) で囲うか シングルクオーテーション ( ' ) で囲う PYTHON3 "

ExcelVBA

LogisticaTRUCKServer-Ⅱ距離計算サーバ/Active-Xコントロール/クライアント 概略   

3D回転体プログラム

占領双六ゲーム

チャットプログラム

単語の比較とスペルチェック COMPARA Word のテキスト内にある単語を抽出し 異なり語のリストを作成するプログラムです また Word のテキスト内の単語 ( または単語リスト ) を 先に作成した単語リストと照合して その異同を確かめます フォーム 単語リスト単語集計同語検索異語検索同語リ

データベース1

VB実用Ⅲ⑩ フリーデータベースⅡ

(Microsoft Word \203v\203\215\203O\203\211\203~\203\223\203O)

データベースⅠ

インベーダープログラム

ソフトウェア基礎 Ⅰ Report#2 提出日 : 2009 年 8 月 11 日 所属 : 工学部情報工学科 学籍番号 : K 氏名 : 當銘孔太

(Microsoft Word - 01PowerPoint\217\343\213\211C\203p\203^\201[\203\223\222m\216\257\225\\\216\206.doc)

基礎計算機演習 実習課題No6

API 連携方式 外部 DLL の呼び出し宣言 外部 DLL の呼び出し宣言のサンプルコード (Microsoft Visual C#.NET の場合 ) プログラムコードの先頭で using System.Runtime.InteropServices; が必要 クラスの内部に以下のような外部 D

データベースプログラミング

かべうちテニス

アプリケーション


Microsoft PowerPoint ppt

WebBrowserコントロール

情報資源組織演習B:

Microsoft Word 練習問題の解答.doc

GS1-128 の描画 DLL について (ver. 2.3) 動作環境など動作環境 WindowsXP Windows Vista Windows7 Windows8/8.1 Windows10 上記 OS について すべて日本語版を対象としております 32bit アプリケーションから呼び出される

MS Office オートメーション

sinfI2005_VBA.doc

Prog2_15th

VB.NET解説

データベース1

PowerPoint プレゼンテーション

相性占いプログラム

MS Office オートメーション

草競馬プログラム

情報処理Ⅰ

チャットアプリ

印刷

文字入3-2 力3 文字入力について ひらがな 漢字 カタカナ 英数字 記号 絵文字などが入力できます ❶ ❷ ❸ ❶ 入力モード切替操作漢 : 漢字 ひらがな入力モード 1 カナ : カタカナ入力モード英 : 英字入力モード数 : 数字入力モード ❷ 全角 / 半角切替操作全 : 全角入力モード

Java - Visual Editor

mySQLの利用

データベースⅠ

ICONファイルフォーマット

回文作成支援プログラム

ドッグファイト

Taro-cshプログラミングの応用.jt

クイックマニュアル(利用者編)

64bit環境で32bitコンポーネントの利用

最初に VBA が使用できるように マクロ と呼ばれるエクセル上のアプリ ( のようなもの ) を準備します Excel メニューの ファイル オプション を選択 表示される Excel のオプション から リボンのユーザー設定 を選択 メインタブ 内の 開発 にチェックを付けて OK をクリック

グラフィックス 目次

Msako技術資料 

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

VB実用⑧ エクセル操作Ⅱ

Transcription:

正規表現 正規表現を使って文字列が或る形式と一致するか調べる 指定された正規表現のパターンと一致する対象が入力文字列内で見付かるか何うかを調べるには Regex クラスの IsMatch メソッドを使用する 此処では IsMatch メソッドを使った例を幾つか紹介する 猶 正規表現のパターンと一致する個所を探し 見付かれば 其の箇所を抽出する方法は 正規表現を使って文字列を検索し 抽出する で紹介して居る 郵便番号か調べる 次の例では テキストボックス (txtsrc) に入力された文字列が郵便番号形式か ( " 数字 3 文字 "-" 数字 4 文字 " 形式に成って居るか ) 調べて居る RegexOptions.ECMAScript を指定して居るのは d が半角の数字丈にマッチする様にする為で有る ' 郵便番号形式か調べる ' パターンは " d3- d4" とも書ける If System.Text.RegularExpressions.Regex.IsMatch( _ txtsrc.text, "^ d d d- d d d d$", _ System.Text.RegularExpressions.RegexOptions.ECMAScript) Then MessageBox.Show(" 郵便番号です ") // 郵便番号形式か調べる // パターンは " d3- d4" とも書ける if (System.Text.RegularExpressions.Regex.IsMatch( txtsrc.text, @"^ d d d- d d d d$", System.Text.RegularExpressions.RegexOptions.ECMAScript)) MessageBox.Show(" 郵便番号です "); 半角カナ文字が含まれて居るか調べる 次の例では txtsrc に入力された文字列内に半角カナ文字 (Halfwidth CJK punctuation と Halfwidth Katakana variants) が有るか調べて居る 上記の例では静的メソッドの IsMatch を使用したが 此処ではインスタンスメソッドを使用して居る ' 正規表現パターンを指定して Regex オブジェクトを作成 Dim R As New System.Text.RegularExpressions.Regex("[ uff61- uff9f]") ' 半角カナ文字が含まれて居るか調べる If R.IsMatch(txtSrc.Text) Then MessageBox.Show(" 半角カナ文字が含まれて居る ") -1-

// 正規表現パターンを指定して Regex オブジェクトを作成 System.Text.RegularExpressions.Regex r = new System.Text.RegularExpressions.Regex( @"[ uff61- uff9f]"); // 半角カナ文字が含まれて居るか調べる if (r.ismatch(txtsrc.text)) MessageBox.Show(" 半角カナ文字が含まれて居る "); メールアドレスか調べる 次の例では txtsrc に入力された文字列がメールアドレス形式か調べて居る 猶 MSDN の 方法 : 文字列が有効な電子メール形式で有るか何うかを検証する では別のパターンが紹介されて居る ' メールアドレス形式か調べる If System.Text.RegularExpressions.Regex.IsMatch( _ txtsrc.text, "^[A-Z0-9._%+-]+@[A-Z0-9.-]+.[A-Z]2,4$", _ System.Text.RegularExpressions.RegexOptions.IgnoreCase) Then MessageBox.Show(" メールアドレスの様です ") // メールアドレス形式か調べる if (System.Text.RegularExpressions.Regex.IsMatch( txtsrc.text, @"^[A-Z0-9._%+-]+@[A-Z0-9.-]+.[A-Z]2,4$", System.Text.RegularExpressions.RegexOptions.IgnoreCase)) MessageBox.Show(" メールアドレスの様です "); URL か調べる 次の例では txtsrc に入力された文字列が URL(HTTP) 形式か調べて居る 猶 此の正規表現パターンは Perl メモ で紹介されて居る物で有る ' URL 形式か調べる If System.Text.RegularExpressions.Regex.IsMatch( _ txtsrc.text, "^s?https?://[-_.!~*'()a-za-z0-9;/?:@&=+$,%#]+$") Then MessageBox.Show("URL の様です ") // URL 形式か調べる if (System.Text.RegularExpressions.Regex.IsMatch( txtsrc.text, @"^s?https?://[-_.!~*'()a-za-z0-9;/?:@&=+$,%#]+$")) MessageBox.Show("URL の様です "); -2-

電話番号か調べる 次の例では テキストボックス (txtsrc) に入力された文字列が ( 日本国内の ) 電話番号形式かを大雑把に調べて居る ' 電話番号形式か調べる If System.Text.RegularExpressions.Regex.IsMatch( _ txtsrc.text, "^0 d1,4- d1,4- d4$") Then MessageBox.Show(" 電話番号の様です ") // 電話番号形式か調べる if (System.Text.RegularExpressions.Regex.IsMatch( txtsrc.text, @"^0 d1,4- d1,4- d4$")) MessageBox.Show(" 電話番号の様です "); -3-

正規表現を使って文字列を検索し抽出する 正規表現を使用して文字列の検索し 検索された文字列を取得するには Regex クラスと Match メソッド ( 又は Matchs メソッド ) を使用する 一致した要素は Match オブジェクトと仕て返される メールアドレスを抽出する 次の例では txtsrc に入力された文字列からメールアドレス形式の文字列を総て検索し 表示する ' Regex オブジェクトを作成 Dim R As New System.Text.RegularExpressions.Regex( _ " b[a-z0-9._%+-]+@[a-z0-9.-]+.[a-z]2,4 b", _ System.Text.RegularExpressions.RegexOptions.IgnoreCase) ' txtsrc.text 内で正規表現と一致する対象を 1 つ検索 Dim M As System.Text.RegularExpressions.Match = R.Match(txtSrc.Text) ' 次の様に一致する対象を総て検索する事も出来る ' Dim Mc As System.Text.RegularExpressions.MatchCollection = R.Matches(txtSrc.Text) Do While M.Success ' 一致した対象が見付かった時キャプチャした部分文字列を表示 MessageBox.Show(M.Value) ' 次に一致する対象を検索 M = M.NextMatch() Loop // Regex オブジェクトを作成 System.Text.RegularExpressions.Regex r = new System.Text.RegularExpressions.Regex( @" b[a-z0-9._%+-]+@[a-z0-9.-]+.[a-z]2,4 b", System.Text.RegularExpressions.RegexOptions.IgnoreCase); // txtsrc.text 内で正規表現と一致する対象を 1 つ検索 System.Text.RegularExpressions.Match m = r.match(txtsrc.text); // 次の様に一致する対象を総て検索する事も出来る // System.Text.RegularExpressions.MatchCollection mc = r.matches(txtsrc.text); while (m.success) // 一致した対象が見付かった時キャプチャした部分文字列を表示 MessageBox.Show(m.Value); // 次に一致する対象を検索 m = m.nextmatch(); -4-

HTML 内の <H> タグを抽出する 次にグループ化の例を示す 正規表現でグループ化を指定するには (?<( 数字又は名前 )>) の様にする 正規表現に一致したグループは Match クラスの Groups プロパティで取得出来る 猶 MSDN には HREFS のスキャン と謂う例や URL 情報の抽出 と謂う例が紹介されて居る 以下に txtsrc に入力された文字列を検索して HTML の H タグ (H1 H2 H3...) と其の部分のテキストを抽出する例を示す 先程の例では Match メソッドを使用したが 今回は Matches メソッドを使用して観る 勿論 先程と同じ様に Match メソッドを使用しても構わない ' 正規表現パターンとオプションを指定して Regex オブジェクトを作成 Dim R As New System.Text.RegularExpressions.Regex( _ "<(h[1-6]) b[^>]*>(.*?)</ 1>", _ System.Text.RegularExpressions.RegexOptions.IgnoreCase Or _ System.Text.RegularExpressions.RegexOptions.Singleline) ' txtsrc.text 内で正規表現と一致する対象を総て検索 Dim Mc As System.Text.RegularExpressions.MatchCollection = R.Matches(txtSrc.Text) For Each M As System.Text.RegularExpressions.Match In Mc ' 正規表現に一致したグループの文字列を表示 MessageBox.Show(" タグ :" & M.Groups(1).Value & vbcrlf & _ " タグ内の文字列 :" & M.Groups(2).Value) Next // 正規表現パターンとオプションを指定して Regex オブジェクトを作成 System.Text.RegularExpressions.Regex r = new System.Text.RegularExpressions.Regex( @"<(h[1-6]) b[^>]*>(.*?)</ 1>", System.Text.RegularExpressions.RegexOptions.IgnoreCase System.Text.RegularExpressions.RegexOptions.Singleline); // txtsrc.text 内で正規表現と一致する対象を総て検索 System.Text.RegularExpressions.MatchCollection mc = r.matches(txtsrc.text); foreach (System.Text.RegularExpressions.Match m in mc) // 正規表現に一致したグループと位置を表示 MessageBox.Show(" タグ :" + m.groups[1].value + " n タグ内の文字列 :" + m.groups[2].value + " n タグの位置 :" + m.groups[1].index); HTML 内のリンクを抽出する 下の例は txtsrc に入力された文字列を検索して <a href="...">...</a> でリンクされて居るリンク先の -5-

URL とリンクされて居る文字列を総て調べ 結果を出力する物で有る 今迄の例ではインスタンスメソッドの Matches( 或るいは Match) を使用して居たが 今回は静的メソッドを使用して観る ' txtsrc.text 内で正規表現と一致する対象を総て検索 Dim Mc As System.Text.RegularExpressions.MatchCollection = _ System.Text.RegularExpressions.Regex.Matches( _ txtsrc.text, _ "<a s+[^>]*href s*= s*(?:(?<quot>[""'])(?<url>.*?) k<quot> " + _ "(?<url>[^ s>]+))[^>]*>(?<text>.*?)</a>", _ System.Text.RegularExpressions.RegexOptions.IgnoreCase Or _ System.Text.RegularExpressions.RegexOptions.Singleline) For Each M As System.Text.RegularExpressions.Match In Mc ' 正規表現に一致したグループを表示 MessageBox.Show("URL:" & M.Groups("url").Value) MessageBox.Show(" テキスト :" & M.Groups("text").Value) Next // txtsrc.text 内で正規表現と一致する対象を総て検索 System.Text.RegularExpressions.MatchCollection mc = System.Text.RegularExpressions.Regex.Matches( txtsrc.text, @"<a s+[^>]*href s*= s*(?:(?<quot>[""'])(?<url>.*?) k<quot> " + @"(?<url>[^ s>]+))[^>]*>(?<text>.*?)</a>", System.Text.RegularExpressions.RegexOptions.IgnoreCase System.Text.RegularExpressions.RegexOptions.Singleline); foreach (System.Text.RegularExpressions.Match m in mc) // 正規表現に一致したグループを表示 MessageBox.Show("URL:" + m.groups["url"].value); MessageBox.Show(" テキスト :" + m.groups["text"].value); 同じ番号 ( 名前 ) のグループが複数有る時 同じ番号のグループに複数の箇所が一致する場合が有る 例えば ( d)+ と謂うパターンで 123 を検索すると グループ 1 に 1 2 3 の 3 つの文字が一致する 亦.NET Framework ではグループに名前や番号を付ける事が出来るので 同じ名前や番号のグループを複数作る事も出来る 此の様に同じ名前や番号のグループが複数有った場合 何う成るかに付いて簡単に説明する 此の様な場合 グループの値と仕ては最後に一致したグループの値が入る 併し キャプチャされた総ての値は グループの Captures コレクションに格納されて居る 具体的に何う成るか 例を示す 以下の例では パターンを ( d)+ とし 123 と謂う文字列を検索して居る -6-

Dim R As New System.Text.RegularExpressions.Regex("( d)+") Dim Mc As System.Text.RegularExpressions.MatchCollection = r.matches("123") For Each M As System.Text.RegularExpressions.Match In Mc For I As Integer = 0 To (M.Groups.Count - 1) MessageBox.Show(" グループ " & I.ToString( ) & ":" & M.Groups(I)) For J As Integer = 0 To (M.Groups(I).Captures.Count - 1) MessageBox.Show(" キャプチャ " & J.ToString( ) & M.Groups(I).Captures(J).Value) Next Next Next System.Text.RegularExpressions.Regex r = new System.Text.RegularExpressions.Regex(@"( d)+"); System.Text.RegularExpressions.MatchCollection mc = r.matches("123"); foreach (System.Text.RegularExpressions.Match m in mc) for (int i = 0; i < m.groups.count; i++) MessageBox.Show(" グループ " + i.tostring( ) + m.groups[i]); for (int j = 0; j < m.groups[i].captures.count; j++) MessageBox.Show(" キャプチャ " + j.tostring( ) + m.groups[i].captures[j].value); 此のプログラムを実行すると 以下の様に表示される グループ 0:123 キャプチャ 0:123 グループ 1:3 キャプチャ 0:1 キャプチャ 1:2 キャプチャ 2:3 此の結果の様に グループ 1 には最後にキャプチャされた 3 が入るが グループ 1 の Captures にはキャプチャされた総ての結果が入って居る -7-

正規表現を使って文字列を置換する 正規表現を使って文字列の置換を行うには Regex クラスの Replace メソッドを使用する 此処では幾つかの具体例を紹介する MSDN にも 日付形式の変更 と謂う例が載って居るので 其方も参考にされ度い URL にリンクを付ける 次の例では txtsrc に入力された文字列内の URL に自動的にリンク (<a> タグ ) を付けて txtsrc に結果を表示して居る 猶 此の正規表現パターンは Perl メモ で紹介されて居る物で有る ' URL にリンクを付ける txtsrc.text = System.Text.RegularExpressions.Regex.Replace( _ txtsrc.text, _ "s?https?://[-_.!~*'()a-za-z0-9;/?:@&=+$,%#]+", _ "<a href=""$&"">$&</a>") // URL にリンクを付ける txtsrc.text = System.Text.RegularExpressions.Regex.Replace( txtsrc.text, @"s?https?://[-_.!~*'()a-za-z0-9;/?:@&=+$,%#]+", "<a href= "$& ">$&</a>"); 行末の空白文字を削除する 次の例では txtsrc に入力された文字列から総ての行末の空白文字 ( 半角スペース 全角スペース タブ ) を削除して居る 先程の例では静的メソッドの Replace を使用したが 此処ではインスタンスメソッドを使用して観る ' パターンを指定して Regex オブジェクトを作成 Dim R As New System.Text.RegularExpressions.Regex("[ t]+(?= r? n $)") ' 行末の空白文字を削除 txtsrc.text = R.Replace(txtSrc.Text, "") // パターンを指定して Regex オブジェクトを作成 System.Text.RegularExpressions.Regex r = new System.Text.RegularExpressions.Regex(@"[ t]+(?= r? n $)"); // 行末の空白文字を削除 txtsrc.text = r.replace(txtsrc.text, ""); 因みに パターンを "[ t]+$" と仕て RegexOptions.Multiline オプションを付けたと仕ても 改行文字が " r n" ならば 行末の空白文字を削除する事は出来ない 何故ならば $ は n の前 r の後ろとマッチする為で有る -8-

行頭に引用記号を挿入する 次の例では txtsrc に入力された文字列の行頭に < を挿入して居る パターンの ^ は 0 幅だが 置換に利用出来る ' 行頭に引用記号 "> " を挿入する txtsrc.text = System.Text.RegularExpressions.Regex.Replace( _ txtsrc.text, "^", "> ", System.Text.RegularExpressions.RegexOptions.Multiline) // 行頭に引用記号 "> " を挿入する txtsrc.text = System.Text.RegularExpressions.Regex.Replace( txtsrc.text, "^", "> ", System.Text.RegularExpressions.RegexOptions.Multiline); 連続する同じ行を削除する 次の例では txtsrc に入力された文字列から連続する同じ行を削除して居る 詰まり 同じ内容の行が連続して居る場合 其れを 1 行丈にする ' 連続する同じ行を削除 txtsrc.text = System.Text.RegularExpressions.Regex.Replace( _ txtsrc.text, "^(.*)( r? n 1)+$", "$1", _ System.Text.RegularExpressions.RegexOptions.Multiline) // 連続する同じ行を削除 txtsrc.text = System.Text.RegularExpressions.Regex.Replace( txtsrc.text, @"^(.*)( r? n 1)+$", "$1", System.Text.RegularExpressions.RegexOptions.Multiline); 日付のフォーマットを変更する 2000/10/22 の様に / で区切られて居る形式の日付を 2000 年 10 月 22 日 と変更する例を示す ' "2000/10/22" の様な形式を "2000 年 10 月 22 日 " の様に変換する txtsrc.text = System.Text.RegularExpressions.Regex.Replace( _ txtsrc.text, _ "(?<year>(?: d d)? d d)/(?<month> d d?)/(?<day> d d?)", _ "$year 年 $month 月 $day 日 ") //"2000/10/22" の様な形式を "2000 年 10 月 22 日 " の様に変換する txtsrc.text = System.Text.RegularExpressions.Regex.Replace( txtsrc.text, @"(?<year>(?: d d)? d d)/(?<month> d d?)/(?<day> d d?)", "$year 年 $month 月 $day 日 "); -9-

MatchEvaluator デリゲートを使用する MatchEvaluator デリゲートを使用すれば 更に複雑な置換が可能で有る 次の例では 日付の部分を 1 日増やした日付と置換して居る ' ボタン ( 開始 ) がクリックされた時の処理 Private Sub btnstart_click(byval sender As Object, ByVal e As System.EventArgs) _ Handles btnstart.click ' 日付の部分 ("2000/10/22" の様な形式 ) を 1 日増加 txtsrc.text = System.Text.RegularExpressions.Regex.Replace( _ txtsrc.text, "(?<year>(?: d d)? d d)/(?<month> d d?)/(?<day> d d?)", _ New System.Text.RegularExpressions.MatchEvaluator(AddressOf IncrementDay)) End Sub ' MatchEvaluator デリゲートメソッド Private Shared Function IncrementDay( _ ByVal M As System.Text.RegularExpressions.Match) As String Dim Dt As DateTime ' マッチした文字列を日時に変換 If DateTime.TryParse(M.Value, Dt) Then Return Dt.AddDays(1).ToShortDateString( ) ' 1 日増やす Else Return M.Value End Function // ボタン ( 開始 ) がクリックされた時の処理 private void btnstart_click(object sender, System.EventArgs e) // 日付の部分 ("2000/10/22" の様な形式 ) を 1 日増加 txtsrc.text = System.Text.RegularExpressions.Regex.Replace( txtsrc.text, @"(?<year>(?: d d)? d d)/(?<month> d d?)/(?<day> d d?)", new System.Text.RegularExpressions.MatchEvaluator(IncrementDay)); // MatchEvaluator デリゲートメソッド private static string IncrementDay(System.Text.RegularExpressions.Match m) DateTime dt; // マッチした文字列を日時に変換 if (DateTime.TryParse(m.Value, out dt)) return dt.adddays(1).toshortdatestring(); // 1 日増やす else return m.value; -10-