Landscape トップページ | < 前の日 2006-01-22 2006-01-23 次の日 2006-01-24 >

Landscape - エンジニアのメモ 2006-01-23

C# の正規表現クラスに複数のオプションを指定する


* C# の正規表現クラスに複数のオプションを指定する

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [C#] [.net] [Perl]

C# の正規表現クラスに複数のオプションを指定するには、 | で RegexOptions 列挙体の OR を取る。|| ではない。

- 今日の失敗 論理演算子 || を RegexOptions に使おうとした

文字列を強調処理する正規表現を書いていたところ、Regex クラスのコンストラクタに正規表現オプションとして RegexOptions 列挙体を渡すところでコンパイルエラーが出た。

Regex highLight = new Regex(Regex.Escape(keyword), RegexOptions.IgnoreCase || RegexOptions.Multiline);

C:\CSProjects\Prototype\ConsoleApplication1\ConsoleApplication1\Class1.cs(30): 演算子 '||' を 'System.Text.RegularExpressions.RegexOptions' と 'System.Text.RegularExpressions.RegexOptions' 型のオペランドに適用することはできません。

んん? なんでエラーになってるの? .NET というか C# で複数の正規表現オプションを Regex クラスのコンストラクタに渡したいときは、OR を取れば良いんでしょう? かなり前にやった覚えがあるんだけど・・・。

あ、わかった。ビット演算の OR (|) じゃなくて論理演算の OR (||) を使ってる。あはは。これが原因か。以下のように修正して無事コンパイルできた。

Regex highLight = new Regex(Regex.Escape(keyword), RegexOptions.IgnoreCase | RegexOptions.Multiline);

- RegexOptions 列挙体でよく使うもの

ちなみに System.Text.RegularExpressions.RegexOptions 列挙体でよく使うのは以下の3つかな。Perl でも i m s などとして指定してたよね。最初は m と s の違いを実感できなかった。とくに、同時に指定したらどうなるのかがわかりにくかったので、2003-03-25 の「Perl の正規表現のオプション m と s」では 実際にどう使うかをまとめた。

RegexOptions 列挙体 - System.Text.RegularExpressions
http://www.microsoft.com/japan/msdn/library/default.asp?url= ...
IgnoreCase
検索時に大文字と小文字を区別しないことを指定します。

Multiline
複数行モードを指定します。^ と $ の意味を変更して、文字列全体の先頭と末尾だけでなく、任意の行の先頭と末尾にもそれぞれが一致するようにします。

Singleline
単一行モードを指定します。\n 以外の任意の文字ではなく、すべての文字と一致するようにピリオド (.) の意味を変更します。


すべての記事の見出し (全1029件)
全カテゴリの一覧と記事の数
カテゴリごとに記事をまとめ読みできます。記事の表題だけを見たい場合は、すべての記事の見出し (カテゴリ別表示) へ。

直近30日分の記事
2007-04-23 (Mon)
2007-03-07 (Wed)
2007-02-27 (Tue)
2007-01-17 (Wed)
2007-01-15 (Mon)
2007-01-14 (Sun)
2007-01-08 (Mon)
2006-12-01 (Fri)
2006-11-22 (Wed)
2006-11-20 (Mon)
2006-11-19 (Sun)
2006-09-30 (Sat)
2006-08-29 (Tue)
2006-08-04 (Fri)
2006-07-27 (Thu)
2006-07-23 (Sun)
2006-07-17 (Mon)
2006-07-10 (Mon)
2006-07-06 (Thu)
2006-07-03 (Mon)
2006-06-29 (Thu)
2006-06-28 (Wed)
2006-06-27 (Tue)
2006-06-25 (Sun)
2006-06-19 (Mon)
2006-06-18 (Sun)
2006-06-15 (Thu)
2006-06-11 (Sun)
2006-06-01 (Thu)
2006-05-30 (Tue)
プロファイル
斎藤 宏明。エンジニアです。宇都宮市に住んでいます。
リンク
RSS
スポンサードリンク
Powered by
さくらインターネット

© 斎藤 宏明 Saito Hiroaki Gmail Address
Landscape - エンジニアのメモ http://sonic64.com/
Landscape はランドスケープと読みます。
ひらがなだと らんどすけーぷ です。