2005年11月29日

C# RegexクラスのMultilineオプション

  
.NET Framework の Regexクラスのコンストラクタのひとつに、

[C#]
public Regex(string pattern,RegexOptions options);

というものがあります。第1引数は、正規表現を、第2引数は、オプションを指定します。このオプションですが、Multiline というものがあるんですね。
これを使えば、複数行のなかから、ある行を探すのに、1行ごとに Matchメソッドを呼び出すのではなく、複数行丸ごと、Matchメソッドの引数に渡すことができるみたいです。

でも、やってみたら、できません???
正規表現として

^ABC$

を指定し、検索してみても、ABC という行と一致してくれません。

理由は単純。改行コードは、\r\n なのですが、正規表現の $ は、\n と一致するので、Windowsで一般的な \r\n 付きの複数行テキストを検索するには、

^ABC\r$

のように、\r をつけてあげないとだめみたいです。
確かにその通りなんだけど、なんだかな〜
もともと 正規表現は、unixで発達したものなので、行末は、\n なのだけれど、.NETは、Windowsで動かすのだから、Multilineオプションを用意するんだったら、\r\n を 行末 $ と一致させるオプションも併せて用意してくれれば良いのにな。
それとも僕が知らないだけ?


 

この記事へのトラックバックURL

この記事へのトラックバック
正規表現とは、文字列を一定の決まった表現を表すものです。 例を出します。 正規表...
正規表現(Regular Expression)?邪道な表現があるんですか?【1日3分! HP 管理がどんどん楽になる強力 SSH 術】at 2005年12月02日 17:28