dotnet:regex

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
dotnet:regex [2009/03/02 18:57] ともやんdotnet:regex [2019/05/18 02:23] (現在) – 外部編集 非ログインユーザー
行 4: 行 4:
 \\ \\
  以下の例では、Regex クラスの引数に **RegexOptions.IgnoreCase** を指定することで、大文字/小文字を区別しないで正規表現のパターンマッチを行っている。\\  以下の例では、Regex クラスの引数に **RegexOptions.IgnoreCase** を指定することで、大文字/小文字を区別しないで正規表現のパターンマッチを行っている。\\
-\\+ 
 +[VB] 
 +<code vbnet> 
 +Imports System 
 +Imports System.Text.RegularExpressions 
 + 
 +Module SampleAppVB 
 +    Private Sub IsMatchFileName(ByVal fileName As String, ByVal pattern As String) 
 +        If Regex.IsMatch(fileName, pattern, _ 
 +                RegexOptions.IgnoreCase) Then   ' 大文字/小文字を区別しない 
 +            Console.WriteLine( _ 
 +                "ファイル名: '{0}' はパターン: '{1}' にマッチしました。",
 +                fileName, pattern) 
 +        Else 
 +            Console.WriteLine( _ 
 +                "ファイル名: '{0}' はパターン: '{1}' にマッチしません。",
 +                fileName, pattern) 
 +        End If 
 +    End Sub 
 + 
 +    Sub Main() 
 +        Dim fileName1 As String = "AAA_00001.txt" 
 +        Dim fileName2 As String = "AAA_00001.txt" 
 +        ' 半角ファイル名の正規表現 
 +        Const TARGET_FILENAME_REGEX As String = "aaa_\d{5}.txt" 
 +        ' 全角ファイル名の正規表現 
 +        Const TARGET_FILENAME_MULTI_BYTE_REGEX As String = "aaa_\d{5}.txt" 
 + 
 +        ' ファイル名のパターンマッチ 
 +        IsMatchFileName(fileName1, TARGET_FILENAME_REGEX) 
 +        IsMatchFileName(fileName2, TARGET_FILENAME_MULTI_BYTE_REGEX) 
 +        IsMatchFileName(fileName1, TARGET_FILENAME_MULTI_BYTE_REGEX) 
 +        IsMatchFileName(fileName2, TARGET_FILENAME_REGEX) 
 +    End Sub 
 +End Module 
 +</code> 
 [C#] [C#]
 <code csharp> <code csharp>
行 14: 行 50:
     public class SampleAppCS     public class SampleAppCS
     {     {
 +        // ファイル名がパターンにマッチするかをテストしてコンソールに結果を出力
         private static void IsMatchFileName(string fileName, string pattern)         private static void IsMatchFileName(string fileName, string pattern)
         {         {
行 33: 行 70:
         static void Main(string[] args)         static void Main(string[] args)
         {         {
-            const string fileName1 = @"AAA_00001.txt"; +            string fileName1 = @"AAA_00001.txt"; 
-            const string fileName2 = @"AAA_00001.txt";+            string fileName2 = @"AAA_00001.txt";
             // 半角ファイル名の正規表現             // 半角ファイル名の正規表現
             const string TARGET_FILENAME_REGEX = @"aaa_\d{5}.txt";             const string TARGET_FILENAME_REGEX = @"aaa_\d{5}.txt";
行 47: 行 84:
         }         }
     }     }
 +}
 +</code>
 +
 +[C++]
 +<code cpp>
 +using namespace System;
 +using namespace System::Text::RegularExpressions;
 +
 +static void IsMatchFileName(String^ fileName, String^ pattern)
 +{
 + if (Regex::IsMatch(fileName, pattern,
 + RegexOptions::IgnoreCase))   // 大文字/小文字を区別しない
 +    {
 + Console::WriteLine(
 +            "ファイル名: '{0}' はパターン: '{1}' にマッチしました。",
 +            fileName, pattern);
 +    }
 +    else
 +    {
 + Console::WriteLine(
 +            "ファイル名: '{0}' はパターン: '{1}' にマッチしません。",
 +            fileName, pattern);
 +    }
 +}
 +
 +int main(array<System::String ^> ^args)
 +{
 + String^ fileName1 = "AAA_00001.txt";
 + String^ fileName2 = "AAA_00001.txt";
 + // 半角ファイル名の正規表現
 + const String^ TARGET_FILENAME_REGEX = "aaa_\\d{5}.txt";
 + // 全角ファイル名の正規表現
 + const String^ TARGET_FILENAME_MULTI_BYTE_REGEX = "aaa_\\d{5}.txt";
 +
 + // ファイル名のパターンマッチ
 + IsMatchFileName(fileName1, (String^)TARGET_FILENAME_REGEX);
 + IsMatchFileName(fileName2, (String^)TARGET_FILENAME_MULTI_BYTE_REGEX);
 + IsMatchFileName(fileName1, (String^)TARGET_FILENAME_MULTI_BYTE_REGEX);
 + IsMatchFileName(fileName2, (String^)TARGET_FILENAME_REGEX);
 +
 + return 0;
 } }
 </code> </code>
行 56: 行 134:
 ファイル名: 'AAA_00001.txt' はパターン: 'aaa_\d{5}.txt' にマッチしません。 ファイル名: 'AAA_00001.txt' はパターン: 'aaa_\d{5}.txt' にマッチしません。
 ファイル名: 'AAA_00001.txt' はパターン: 'aaa_\d{5}.txt' にマッチしません。 ファイル名: 'AAA_00001.txt' はパターン: 'aaa_\d{5}.txt' にマッチしません。
 +</code>
 +
 +===== グループ化構成体を利用した値の抽出 =====
 +[VB]
 +<code vbnet>
 +Imports System
 +Imports System.Text.RegularExpressions
 +
 +Module SampleAppVB
 +    Sub Main()
 +        Dim fileName1 As String = "fileA_20090304_00001.txt"
 +        Dim fileName2 As String = "fileB_20090305_00002.txt"
 +
 +        ' グループ名定義
 +        Const REGEX_GROUP_DATE As String = "date"       ' 日付
 +        Const REGEX_GROUP_COUNTER As String = "counter" ' カウンタ
 +        ' ファイル名の正規表現
 +        Const TARGET_FILENAME_REGEX As String = _
 +            "file[AB]_" & _
 +            "(?<" & REGEX_GROUP_DATE & ">\d{8})_" & _
 +            "(?<" & REGEX_GROUP_COUNTER & ">\d{5}).txt"
 +
 +        ' パターンマッチ情報を取得
 +        Dim mt1 As Match = Regex.Match(fileName1, TARGET_FILENAME_REGEX)
 +
 +        ' 日付、および、カウンタを抽出して表示
 +        Console.WriteLine( _
 +            "ファイル名: '{0}' (日付: '{1}'、カウンタ: '{2}')", _
 +            fileName1, _
 +            mt1.Groups(REGEX_GROUP_DATE).Value, _
 +            mt1.Groups(REGEX_GROUP_COUNTER).Value)
 +
 +        ' パターンマッチ情報を取得
 +        Dim mt2 As Match = Regex.Match(fileName2, TARGET_FILENAME_REGEX)
 +
 +        ' 日付、および、カウンタを抽出して表示
 +        Console.WriteLine( _
 +            "ファイル名: '{0}' (日付: '{1}'、カウンタ: '{2}')", _
 +            fileName2, _
 +            mt2.Groups(REGEX_GROUP_DATE).Value, _
 +            mt2.Groups(REGEX_GROUP_COUNTER).Value)
 +    End Sub
 +End Module
 +</code>
 +
 +[実行結果]
 +<code>
 +ファイル名: 'fileA_20090304_00001.txt' (日付: '20090304'、カウンタ: '00001')
 +ファイル名: 'fileB_20090305_00002.txt' (日付: '20090305'、カウンタ: '00002')
 </code> </code>
  • dotnet/regex.1235987827.txt.gz
  • 最終更新: 2019/05/18 02:23
  • (外部編集)