C#の正規表現とは?概要から使い方までわかりやすく解説

「そもそもC#の正規表現とは?」「C#の正規表現について詳しく知りたい」

このような方に向けて、ここではエンジニア歴10年の著者がC#の正規表現について紹介していきます。

本記事を読んでわかることは下記です。

  • C#の正規表現
  • C#の正規表現の使い方

わかりやすく解説していますので、ぜひ参考にしてください。

C#の正規表現とは

そもそも正規表現とは何でしょうか?

正規表現について一口で言うと「文字列のパターンを指定した形式で表現するもの」です。

正規表現を使用することで、正規表現で指定したパターンに一致した文字列を検索したり、抽出することが可能です。

例えば、以下のような処理を実施したいときに正規表現は使われます。

  • 文字列の中に特定の文字列が含まれているか確認したい場合
  • 一致した文字列を抽出したい場合
  • 一致した文字列を他の文字列に置換したい場合

より具体的には、メールアドレスが正しく入力されているかをチェックしたり、一部指定した名前がついた商品の情報を抽出したり、特定の商品の名前を一部変更するなどの処理で実装されます。

正規表現で文字列を扱う処理は、実際によく使われますので、ぜひ覚えておきましょう。

C#で正規表現を使用するには

C#で実際に正規表現を使用するには、どうすればいいのでしょうか?
C#で正規表現を使用するためには、Regexクラスのメソッドを使用します。

  • Regex.IsMatch:文字列パターンが一致するか調べる
  • Regex.Matches:文字列パターンが一致した全ての文字列を抽出する

どちらのメソッドも引数に正規表現のパターンを指定する必要があります。

実際によく使われる正規表現は以下のとおりです。

ここで紹介している以外にも正規表現にはさまざまなパターンがあります。詳細はMicrosoftの正規表現クイック・リファレンスを参考にしてください。*注1

C#の正規表現の使い方

ここでは、C#でよく使われる正規表現である以下の2つのメソッドについて解説していきます。

  • IsMatchメソッド
  • Matchesメソッド

それぞれ詳しく見ていきましょう。

IsMatchで文字列パターンが一致するか調べる

IsMatchメソッドは指定した正規表現と一致する箇所が、指定した文字列内に存在するかを確認します。

IsMatchの書き方は以下のとおりです。

IsMatchメソッドは戻り値にBoolean型の値を返します。

引数に指定した対象文字列に対して、指定した正規表現のパターンで一致する箇所が見つかった場合にtrue(真)を、見つからなかった場合はfalse(偽)を返します。

以下のサンプルプログラムでは、IsMatchメソッドを使用して文字列「address_test@example.com」の中に指定した文字列が存在するか確認します。

IsMatchのサンプルプログラム1

実行結果:@example.comは含まれます。

IsMatchメソッドは戻り値にBoolean型の値を返すため、サンプルプログラムのようにif文の条件式として使用できます。

IsMatchメソッドはこのように正しい文字列が入力されているか、確認したいときによく使われます。

また、以下のプログラムでは正規表現パターンに[0-9]を指定して、文字列の中に数値が含まれているか確認しています。

IsMatchのサンプルプログラム2

実行結果:文字列の中に数字は含まれます。

Matchesで一致した文字列を抽出する

Matchesメソッドは第一引数に検索対象の文字列を指定し、第二引数に正規表現のパターンを指定します。正規表現のパターンに一致した文字列は全て抽出されます。

Matchesの書き方は以下のとおりです。

Matchesメソッドは戻り値にMatchオブジェクトのコレクションである、MatchCollectionを返します。正規表現のパターンが一致しなかった場合は、空のオブジェクトを返します。

以下のサンプルプログラムでは、Matchesメソッドで文字列の中に数値が含まれていた場合は、全ての数値を出力しています。

Matchesのサンプルプログラム

実行結果:
1
2
3
4
5
6

まとめ

ここではC#の正規表現について、以下の内容で解説しました。

  • C#の正規表現とは
  • C#のIsMatchメソッドの使い方
  • C#のMatchesメソッドの使い方

正規表現は実際に文字列のチェックをするときや、文字列の中から必要な文字列を抽出するときなどによく使われます。

そのため正規表現で文字列を検索する基本的な方法については、しっかりと理解しておきましょう。




エンジニア募集中

株式会社キャパでは中途エンジニアの募集をしています。
私たちと一緒に働きませんか?
募集概要について詳しくは


■参考文献

*注1
Microsoft 正規表現言語 – クイック リファレンスRegular Expression Language
https://docs.microsoft.com/ja-jp/dotnet/standard/base-types/regular-expression-language-quick-reference

関連記事一覧