C葃正則関数の使用例【マッチング、置換、抽出】


本論文の実例はC〓正則関数の使用法を述べている。皆さんに参考にしてあげます。具体的には以下の通りです。
System.Text.Reglar Expressionsの名前空間にはいくつかのクラスが含まれています。これらのクラスはNET Framworkの正規表現エンジンへのアクセスを提供します。この名前空間は、Microsoft.NET Framewark内で実行される任意のプラットフォームまたは言語から、正規表現機能を提供する。
1正規表現の一般的な使用
①フォーマットマッチング

/// <summary>
///       
/// </summary>
/// <returns></returns>
public static string CheckMail(string strEmail)
{
  string result = "";
  Regex regex = new Regex(@"[a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}");
  Match match = regex.Match(strEmail);
  if(match.Success)
  {
    result = strEmail;
  }
  else
  {
    result = "    ";
  }
  return result;
}

②マッチした内容を置換する

/// <summary>
///       (yyyy-MM-dd   yyyy MM dd )
/// </summary>
/// <param name="strDate"></param>
/// <returns></returns>
public static string TransDate(string strDate)
{
  string result = "";
  Regex regex = new Regex(@"(\d+)-(\d+)-(\d+)");
  if(regex.IsMatch(strDate))
  {
    result = regex.Replace(strDate,"$1 $2 $3 ");
  }
  return result;
}

③マッチング内容の抽出

/// <summary>
///             
/// </summary>
public static string Contentextract()
{
  string result = "";
  string str = "   ! <User EntryTime='2010-10-7' Email='[email protected]'>  </User>     。";
  Regex regex = new Regex(@"<User\s*EntryTime='(?<time>[\s\S]*?)'\s+Email='(?<email>[\s\S]*?)'>(?<userName>[\s\S]*?)</User>", RegexOptions.IgnoreCase);
  Match match = regex.Match(str);
  if(match.Success)
  {
    string userName = match.Groups["userName"].Value; //     
    string time = match.Groups["time"].Value; //      
    string email = match.Groups["email"].Value; //      
    string strFormat = String.Format("  :{0},    :{1},  :{2}", userName, time, email);
    result = regex.Replace(str, strFormat); //    
    Console.WriteLine(result);
  }
  return result;  //  :   !    ,    :2010-10-7,  :[email protected]     。
}

2私の一例

/// <summary>
///  XML        
/// </summary>
/// <param name="args"></param>
static void Main(string[] args)
{
  string strXml = GetStrXml(); //      XML
  Regex userRegex = new Regex(@"<User\s*EntryTime='(?<time>[\s\S]*?)'\s+Email='(?<email>[\s\S]*?)'>(?<userName>[\s\S]*?)</User>", RegexOptions.IgnoreCase);
  MatchCollection userMatchColl = userRegex.Matches(strXml);
  if (userMatchColl.Count > 0)
  {
    foreach (Match matchItem in userMatchColl)
    {
      string userName = matchItem.Groups["userName"].Value; //     
      string time = TransDate(matchItem.Groups["time"].Value); //      ,       
      string email = CheckMail(matchItem.Groups["email"].Value); //      ,       
      string strFormat = String.Format("  :{0},    :{1},  :{2}", userName, time, email);
      Console.WriteLine(strFormat);
    }
  }
  Console.ReadLine();
}
/// <summary>
///       XML
/// </summary>
/// <returns></returns>
public static string GetStrXml()
{
  StringBuilder strXml = new StringBuilder();
  strXml.Append("<UserInfo>");
  strXml.Append("<User EntryTime='2010-10-7' Email='[email protected]'>  </User>");
  strXml.Append("<User EntryTime='2012-5-15' Email='lisi163.com'>  </User>");
  strXml.Append("<User EntryTime='2012-6-13' Email='[email protected]'>  </User>");
  strXml.Append("</UserInfo>");
  return strXml.ToString();
}

PS:ここでもう2つの非常に便利な正規表現ツールを提供します。
JavaScript正規表現はオンラインテストツールです。
http://tools.jb51.net/regex/javascript
正規表現のオンライン作成ツール:
http://tools.jb51.net/regex/create_reg
C˜関連の内容についてもっと興味がある読者は、当駅のテーマを見ることができます。「C氨正則表現の使い方のまとめ」、「C〓〓コードの操作の技巧は総括します」、「C〓中XMLファイルの操作技術のまとめ」、「C〓〓よくあるコントロールの使い方教程」、「WinFormコントロールの使い方のまとめ」、「C〓〓〓データ構造とアルゴリズム教程」、「C铅対象プログラム設計入門教程」および「C〓〓〓プログラムの設計のスレッドは技巧を使って総括します。
ここで述べたように、皆さんのC〓プログラムの設計に役に立ちます。