朧の.Netの足跡
問合せ先:support@oborodukiyo.info サイト内検索はこちら
正規表現 .Netでの基本





.Netでは、正規表現のクラスはRegexです。
簡単な例ですが、サンプルではa.cにマッチする文字列を検索しています。
「.」は、改行以外の任意の1文字にマッチします。
aBcや、a/cにマッチしますが、abbcやa2345cにはマッチしません。
正規表現ではマッチする文字数も指定出来ます。
検索を行わせるメソッドは、一つだけならMatchで、マッチするところ全部ならMatchesです。
一つのマッチごとに、結果の変数、例えばm01なら、m01.Valueでマッチしたか所を取得できます。
マッチしたか所の置き換えも難しくなくて、サンプルでは正規表現r01のメソッドで、Replace(TEXT01, "<b>ABC</b>")と指定すると、マッチしたか所が全部<b>ABC</b>となります。

C#

            string TEXT01 = "aBcDeFgabcdEfG";
            
            Regex r01 = new Regex("a.c");
            //マッチするものがあったかどうかだけをチェックするなら、IsMatchメソッドが便利です。
            if (r01.IsMatch(TEXT01))
            {
                this.textBox1.Text += "r01.IsMatch:マッチしました" + "\r\n";
            }
            else
            {
                this.textBox1.Text += "r01.IsMatch:マッチしませんでした" + "\r\n";
            }
            
            //マッチを一つずつ検索する方法
            //Matchメソッドを使う。
            //マッチするものがなくてもnullが返されることはない。
            Match m01 = r01.Match(TEXT01);
            //マッチしていたか確認するプロパティがSuccess
            while (m01.Success)
            {
                this.textBox1.Text += "m011:" + m01.Value + "\r\n";
                //次のマッチに進む
                //NextMatchを使う。
                m01 = m01.NextMatch();
            }
            
            //一度に全てのマッチを検索する方法
            //Matchesメソッドを使う。
            MatchCollection m02 = r01.Matches(TEXT01);
            foreach (Match m in m02)
            {
                this.textBox1.Text += "m02:" + m.Groups[0].Value + "\r\n";
            }
            
            //マッチしたところを置き換える。
            //Replaceメソッドを使う。
            string result01 = r01.Replace(TEXT01, "ABC");
            this.textBox1.Text += "replace:" + result01 + "\r\n";

            //結果
            //r01.IsMatch:マッチしました
            //m011:aBc
            //m011:abc
            //m02:aBc
            //m02:abc
            //replace:ABCDeFgABCdEfG

        

VB.NET

        Dim TEXT01 As String = "aBcDeFgabcdEfG"
        Dim r01 As Regex = New Regex("a.c")

        'マッチするものがあったかどうかだけをチェックするなら、IsMatchメソッドが便利です。
        If r01.IsMatch(TEXT01) Then
            Me.TextBox1.Text += "r01.IsMatch:マッチしました" + vbCrLf
        Else
            Me.TextBox1.Text += "r01.IsMatch:マッチしませんでした" + vbCrLf
        End If

        'マッチを一つずつ検索する方法
        'Matchメソッドを使う。
        'マッチするものがなくてもnullが返されることはない。
        Dim m01 As Match = r01.Match(TEXT01)
        'マッチしていたか確認するプロパティがSuccess
        While m01.Success
            Me.TextBox1.Text += "m011:" + m01.Value + vbCrLf
            '次のマッチに進む
            'NextMatchを使う。
            m01 = m01.NextMatch()
        End While

        '一度に全てのマッチを検索する方法
        'Matchesメソッドを使う。
        Dim m02 As MatchCollection = r01.Matches(TEXT01)
        For Each m As Match In m02
            Me.TextBox1.Text += "m02:" + m.Groups(0).Value + vbCrLf
        Next

        'マッチしたところを置き換える。
        'Replaceメソッドを使う。
        Dim result01 As String = r01.Replace(TEXT01, "ABC")
        Me.TextBox1.Text += "replace:" + result01 + vbCrLf

        '結果
        'r01.IsMatch:マッチしました
        'm011:aBc
        'm011:abc
        'm02:aBc
        'm02:abc
        'replace:ABCDeFgABCdEfG

        








良いやや良い普通やや悪い悪い

投稿日時評価コメント