【C#】【book】「実戦で役立つ C# プログラミングのイディオム/定石&パターン」の学習記録(10)

下記の「実戦で役立つ C# プログラミングのイディオム/定石&パターン」を使った学習記録のページです。
実戦で役立つ C#プログラミングのイディオム/定石&パターン
 
本学習記録のトップページはこちら
 

 

本学習のトップページ

本学習のトップページへ
 

10.2 文字列の判定

10.2.1 指定したパターンに一致した部分文字列があるか判定する

10.2.2 指定したパターンで文字列が始まっているか判定する

10.2.3 指定したパターンで文字列が終わっているか判定する

10.2.4 指定したパターンに完全に一致しているか判定する

下記のような list.txt があり、XX_YY_ZZ_*_aaaa という行のみを抽出する方法。
 
list.txt

@@@@@@@@@@@@@
XX_YY_ZZ_No0024_aaaa
XX_YY_ZZ_No0023_aaaa
XX_YY_ZZ_No0087_aaaa
XX_YY_ZZ_No0008_aaaa
XX_YY_ZZ_No0052_aaaa
@@@@@@@@@@@@@

 

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;

namespace OprStrSample
{
  class Program
  {
    static void Main( string[] args )
    {
      string[] lines = File.ReadAllLines( @"C:\Users\neko\cs\data\list.txt" );
      foreach ( string line in lines )
      {
        bool isMatch = Regex.IsMatch( line, @"^XX_YY_ZZ_No(\d{4})_(\w+)$" );
//      bool isMatch = Regex.IsMatch( line, @"XX_YY_ZZ_No(\w+)_aaaa" );
//      bool isMatch = Regex.IsMatch( line, @"XX_YY_ZZ_No(\w*)_aaaa" );
//      bool isMatch = Regex.IsMatch( line, @"XX_YY_ZZ_No(\w{4})_aaaa" );

//      bool isMatch = Regex.IsMatch( line, @"XX_YY_ZZ_No(\d+)_aaaa" );
//      bool isMatch = Regex.IsMatch( line, @"XX_YY_ZZ_No(\d*)_aaaa" );
//      bool isMatch = Regex.IsMatch( line, @"XX_YY_ZZ_No(\d{4})_aaaa" );

//      bool isMatch = Regex.IsMatch( line, @"\w._YY_ZZ_No(\d{4})_aaaa" );
//      bool isMatch = Regex.IsMatch( line, @"(\w._){3}No(\d{4})_aaaa" );
//      bool isMatch = Regex.IsMatch( line, @"^XX_\w+_No(\d{4})_aaaa" );
        if ( isMatch )
        {
          Console.WriteLine( $"{line}" );
        }
      }
    }
  }
}