C#の正規表現2(C#における利用法)

実際にプログラミングの中で正規表現を利用するには、usingディレクティブに
using System.Text.RegularExpressions;
を追加する。

正規表現を扱うクラス Regex

Regex は「Regular Expression」の略。

例.

using System.Text.RegularExpressions;
class Program{
    static void Main(string[] args){
        string text = "April May June July";
        foreach (Match item in Regex.Matches(text, @"\w+")){
            Console.WriteLine($"{item.Index}文字目 {item.Value} ");
        }
    }
}
実行結果.
0文字目 April
6文字目 May
10文字目 June
15文字目 July

ここで注目Regex.Matches(text, @"\w+")に注目する. Matchesメソッドは検索対象となるテキストから、正規表現が マッチするものをすべて見つけるときに用いる。第1引数が対象となるテキスト、第2引数が正規表現。

Matchesメソッド
第1引数 検索対象となるテキスト
第2引数 正規表現
記号@は""の中で使用される「\」の特別な意味を無効化するためのもの(とはいっても正規表現の中での特別な意味は無効化しない!) ここは難しいところであるから、最初はあまり気にしなくても良いだろう。以下は補足.
Visual Studioのエディター上の""の中のテキストでは「\」は特別な意味を持つ(例えば「\n」は改行を表すというように.) この意味を打ち消す効果が@にはある。 一方、正規表現でも「\」は基本的には特別な意味を付与するものとして用いられる。今の場合でいえば、「\w」は文字列として"\w"を意味せず、 単語に用いられるような1文字を表すようになる。しかし、このような正規表現の中の特別な「\」の意味を打ち消す効果は@にはない。 もし文字列としての"\w"を検索したいときは、@"\\w"とする。
前回の復習となるが \wは単語に使用されるような1文字を表す。+は 前の要素の1文字以上の文字列を表す。 したがって、\w+は1文字以上の長さの単語に用いられるような文字からなる文字列を表す。 例. "there are 3pens."であれば、最初に"there"にマッチし、次に"are"、最後に"3pens"にマッチする。
Matchクラスのプロパティ
Index マッチした文字列の位置
Length マッチした文字列の長さ
Value マッチした文字列