C#の正規表現
2018/05/12
C#で置換
郵便番号からハイフンを削除
zip = zip.Replace("-","");
逆にハイフンを挿入する場合
// キャプチャの結果が保存される$1、$2が""の中に入っていることに注意 // Perlと違い外に出すと怒られます zip = Regex.Replace(zip, @"(\d{3})(\d{4})","$1-$2");
複数行にマッチさせる
複数行にマッチさせたいので RegexOptions.Multiline かと思ったら RegexOptions.Singleline が正解。string html = @"<head> <style> body{ } </style> </head> "; var plaintext = Regex.Replace(html, @"<style(.*?)style>", "", RegexOptions.Singleline);
オプションを複数指定する
「|」で区切る例:大文字小文字を無視して複数行にマッチさせる
var plaintext = Regex.Replace(html, @"<(?!img|br)(.|\s)*?>", "", RegexOptions.Singleline|RegexOptions.IgnoreCase);
エスケープ
// 特別な意味を持つ、エスケープが必要な文字 // . $ ^ { [ ( | ) * + ? \ // \マーク(バックスラッシュ)でエスケープ string html = @"aaa.bbb$cccc*ddd"; var plaintext = Regex.Replace(html, @"[\.\$\*]", "", RegexOptions.Singleline); // ただし逐語的リテラル文字列(@"")内における"のエスケープは" // こちらはまだしも string html = @"<div style=""color:red;"">test </div> "; // "が3つ並ぶとか嫌すぎる… var plaintext = Regex.Replace(html, @"style="".*""", "", RegexOptions.Singleline);