Regex Regex Regex Regex Constructors

定義

オーバーロード

Regex() Regex() Regex()

Regex クラスの新しいインスタンスを初期化します。Initializes a new instance of the Regex class.

Regex(String) Regex(String) Regex(String) Regex(String)

指定した正規表現の Regex クラスの新しいインスタンスを初期化します。Initializes a new instance of the Regex class for the specified regular expression.

Regex(SerializationInfo, StreamingContext) Regex(SerializationInfo, StreamingContext) Regex(SerializationInfo, StreamingContext) Regex(SerializationInfo, StreamingContext)

シリアル化したデータを使用して、Regex クラスの新しいインスタンスを初期化します。Initializes a new instance of the Regex class by using serialized data.

Regex(String, RegexOptions) Regex(String, RegexOptions) Regex(String, RegexOptions) Regex(String, RegexOptions)

パターンを変更するオプションを使用して、指定した正規表現の Regex クラスの新しいインスタンスを初期化します。Initializes a new instance of the Regex class for the specified regular expression, with options that modify the pattern.

Regex(String, RegexOptions, TimeSpan) Regex(String, RegexOptions, TimeSpan) Regex(String, RegexOptions, TimeSpan) Regex(String, RegexOptions, TimeSpan)

パターンを変更するオプションと、パターン マッチ メソッドがタイムアウトするまでに一致を試みる時間を指定する値を使用して、指定した正規表現の Regex クラスの新しいインスタンスを初期化します。Initializes a new instance of the Regex class for the specified regular expression, with options that modify the pattern and a value that specifies how long a pattern matching method should attempt a match before it times out.

Regex() Regex() Regex()

Regex クラスの新しいインスタンスを初期化します。Initializes a new instance of the Regex class.

protected:
 Regex();
protected Regex ();
Protected Sub New ()

注釈

このコンストラクターは保護されていることに注意してください。このクラスは、クラスから派生したRegexクラスによってのみ呼び出すことができます。Note that this constructor is protected; it can only be called by classes derived from the Regex class.

Regex(String) Regex(String) Regex(String) Regex(String)

指定した正規表現の Regex クラスの新しいインスタンスを初期化します。Initializes a new instance of the Regex class for the specified regular expression.

public:
 Regex(System::String ^ pattern);
public Regex (string pattern);
new System.Text.RegularExpressions.Regex : string -> System.Text.RegularExpressions.Regex
Public Sub New (pattern As String)

パラメーター

pattern
String String String String

一致させる正規表現パターン。The regular expression pattern to match.

例外

正規表現の解析エラーが発生しました。A regular expression parsing error occurred.

次の例は、このコンストラクターを使用して、文字 "a" または "t" で始まる任意の単語と一致する正規表現をインスタンス化する方法を示しています。The following example illustrates how to use this constructor to instantiate a regular expression that matches any word that begins with the letters "a" or "t".

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string pattern = @"\b[at]\w+";
      string text = "The threaded application ate up the thread pool as it executed.";
      MatchCollection matches;

      Regex defaultRegex = new Regex(pattern);
      // Get matches of pattern in text
      matches = defaultRegex.Matches(text);
      Console.WriteLine("Parsing '{0}'", text);
      // Iterate matches
      for (int ctr = 0; ctr < matches.Count; ctr++)
         Console.WriteLine("{0}. {1}", ctr, matches[ctr].Value);
   }
}
// The example displays the following output:
//       Parsing 'The threaded application ate up the thread pool as it executed.'
//       0. threaded
//       1. application
//       2. ate
//       3. the
//       4. thread
//       5. as
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim pattern As String = "\b[at]\w+"
      Dim text As String = "The threaded application ate up the thread pool as it executed."
      Dim matches As MatchCollection

      Dim defaultRegex As New Regex(pattern)
      ' Get matches of pattern in text
      matches = defaultRegex.Matches(text)
      Console.WriteLine("Parsing '{0}'", text)
      ' Iterate matches
      For ctr As Integer = 0 to matches.Count - 1
         Console.WriteLine("{0}. {1}", ctr, matches(ctr).Value)
      Next
   End Sub
End Module
' The example displays the following output:
'       Parsing 'The threaded application ate up the thread pool as it executed.'
'       0. threaded
'       1. application
'       2. ate
'       3. the
'       4. thread
'       5. as

既定では比較では大文字と小文字が区別されるため、正規表現パターンは、テキストの先頭の "the" という語とは一致しません。Note that the regular expression pattern cannot match the word "The" at the beginning of the text, because comparisons are case-sensitive by default. 大文字と小文字を区別しない比較のRegex(String, RegexOptions)例については、コンストラクターを参照してください。For an example of case-insensitive comparison, see the Regex(String, RegexOptions) constructor.

注釈

パラメーター patternは、一致させる文字列をシンボリックに記述する正規表現言語要素で構成されます。The pattern parameter consists of regular expression language elements that symbolically describe the string to match. 正規表現の詳細については、「正規表現正規表現言語の .NET Framework」を参照してください。For more information about regular expressions, see the .NET Framework Regular Expressions and Regular Expression Language - Quick Reference topics.

コンストラクターの呼び出しは、 options引数Noneに値Regex(String, RegexOptions)を指定してコンストラクターを呼び出すことと同じです。 Regex(String)Calling the Regex(String) constructor is equivalent to calling the Regex(String, RegexOptions) constructor with a value of None for the options argument.

Regexオブジェクトは変更できません。つまり、オブジェクトを作成するときに定義した一致パターンにのみ使用できます。A Regex object is immutable, which means that it can be used only for the match pattern you define when you create it. ただし、再コンパイルせずに何回でも使用できます。However, it can be used any number of times without being recompiled.

このコンストラクターは、でpattern定義されている英文字の大文字と小文字を区別して照合を試みる正規表現オブジェクトをインスタンス化します。This constructor instantiates a regular expression object that attempts a case-sensitive match of any alphabetical characters defined in pattern. 大文字と小文字を区別しないRegex.Regex(String, RegexOptions)一致の場合は、コンストラクターを使用します。For a case-insensitive match, use the Regex.Regex(String, RegexOptions) constructor.

注意 (呼び出し元)

このコンストラクターは、 Regex作成されたアプリケーションドメインの既定のタイムアウト値を使用するオブジェクトを作成します。This constructor creates a Regex object that uses the default time-out value of the application domain in which it is created. タイムアウト値がアプリケーションドメインに対して定義されていない場合、 Regexオブジェクトは値InfiniteMatchTimeoutを使用して、操作がタイムアウトしないようにします。オブジェクトをRegex作成するために推奨さRegex(String, RegexOptions, TimeSpan)れるコンストラクターはです。これにより、タイムアウト間隔を設定できます。If a time-out value has not been defined for the application domain, the Regex object uses the value InfiniteMatchTimeout, which prevents the operation from timing out. The recommended constructor for creating a Regex object is Regex(String, RegexOptions, TimeSpan), which lets you set the time-out interval.

こちらもご覧ください

Regex(SerializationInfo, StreamingContext) Regex(SerializationInfo, StreamingContext) Regex(SerializationInfo, StreamingContext) Regex(SerializationInfo, StreamingContext)

シリアル化したデータを使用して、Regex クラスの新しいインスタンスを初期化します。Initializes a new instance of the Regex class by using serialized data.

protected:
 Regex(System::Runtime::Serialization::SerializationInfo ^ info, System::Runtime::Serialization::StreamingContext context);
protected Regex (System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context);
new System.Text.RegularExpressions.Regex : System.Runtime.Serialization.SerializationInfo * System.Runtime.Serialization.StreamingContext -> System.Text.RegularExpressions.Regex
Protected Sub New (info As SerializationInfo, context As StreamingContext)

パラメーター

info
SerializationInfo SerializationInfo SerializationInfo SerializationInfo

シリアル化されたパターンと RegexOptions 情報を保持するオブジェクト。The object that contains a serialized pattern and RegexOptions information.

context
StreamingContext StreamingContext StreamingContext StreamingContext

このシリアル化のシリアル化先。The destination for this serialization. (このパラメーターは使用されません。null を指定してください。)(This parameter is not used; specify null.)

例外

正規表現の解析エラーが発生しました。A regular expression parsing error occurred.

info に含まれているパターンが null です。The pattern that info contains is null.

info に無効な RegexOptions フラグが含まれています。info contains an invalid RegexOptions flag.

Regex(String, RegexOptions) Regex(String, RegexOptions) Regex(String, RegexOptions) Regex(String, RegexOptions)

パターンを変更するオプションを使用して、指定した正規表現の Regex クラスの新しいインスタンスを初期化します。Initializes a new instance of the Regex class for the specified regular expression, with options that modify the pattern.

public:
 Regex(System::String ^ pattern, System::Text::RegularExpressions::RegexOptions options);
public Regex (string pattern, System.Text.RegularExpressions.RegexOptions options);
new System.Text.RegularExpressions.Regex : string * System.Text.RegularExpressions.RegexOptions -> System.Text.RegularExpressions.Regex
Public Sub New (pattern As String, options As RegexOptions)

パラメーター

pattern
String String String String

一致させる正規表現パターン。The regular expression pattern to match.

options
RegexOptions RegexOptions RegexOptions RegexOptions

正規表現を変更する列挙値のビットごとの組み合わせ。A bitwise combination of the enumeration values that modify the regular expression.

例外

正規表現の解析エラーが発生しました。A regular expression parsing error occurred.

options に無効なフラグが含まれています。options contains an invalid flag.

次の例は、このコンストラクターを使用して、文字 "a" または "t" で始まる任意の単語と一致する正規表現をインスタンス化する方法を示しています。The following example illustrates how to use this constructor to instantiate a regular expression that matches any word that begins with the letters "a" or "t".

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string pattern = @"\b[at]\w+";
      RegexOptions options = RegexOptions.IgnoreCase | RegexOptions.Compiled;
      string text = "The threaded application ate up the thread pool as it executed.";
      MatchCollection matches;

      Regex optionRegex = new Regex(pattern, options);
      Console.WriteLine("Parsing '{0}' with options {1}:", text, options.ToString());
      // Get matches of pattern in text
      matches = optionRegex.Matches(text);
      // Iterate matches
      for (int ctr = 0; ctr < matches.Count; ctr++)
         Console.WriteLine("{0}. {1}", ctr, matches[ctr].Value);
   }
}
// The example displays the following output:
//    Parsing 'The threaded application ate up the thread pool as it executed.'
//        with options IgnoreCase, Compiled:
//    0. The
//    1. threaded
//    2. application
//    3. ate
//    4. the
//    5. thread
//    6. as
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim pattern As String = "\b[at]\w+"
      Dim options As RegexOptions = RegexOptions.IgnoreCase Or RegexOptions.Compiled
      Dim text As String = "The threaded application ate up the thread pool as it executed."
      Dim matches As MatchCollection

      Dim optionRegex As New Regex(pattern, options)
      Console.WriteLine("Parsing '{0}' with options {1}:", text, options.ToString())
      ' Get matches of pattern in text
      matches = optionRegex.Matches(text)
      ' Iterate matches   
      For ctr As Integer = 0 to matches.Count - 1
         Console.WriteLine("{0}. {1}", ctr, matches(ctr).Value)
      Next
   End Sub
End Module
' The example displays the following output:
'    Parsing 'The threaded application ate up the thread pool as it executed.'
'       with options IgnoreCase, Compiled:
'    0. The
'    1. threaded
'    2. application
'    3. ate
'    4. the
'    5. thread
'    6. as

一致コレクションには、パラメーターでoptions大文字と小文字を区別しない比較が定義されているため、テキストを開始する "the" という単語が含まれていることに注意してください。Note that the match collection includes the word "The" that begins the text because the options parameter has defined case-insensitive comparisons.

注釈

パラメーター patternは、一致させる文字列をシンボリックに記述する正規表現言語要素で構成されます。The pattern parameter consists of regular expression language elements that symbolically describe the string to match. 正規表現の詳細については、「正規表現正規表現言語の .NET Framework」を参照してください。For more information about regular expressions, see the .NET Framework Regular Expressions and Regular Expression Language - Quick Reference topics.

Regexオブジェクトは変更できません。つまり、オブジェクトを作成するときに定義した一致パラメーターにのみ使用できます。A Regex object is immutable, which means that it can be used only for the match parameters you define when you create it. ただし、再コンパイルせずに何回でも使用できます。However, it can be used any number of times without being recompiled.

注意 (呼び出し元)

このコンストラクターは、 Regex作成されたアプリケーションドメインの既定のタイムアウト値を使用するオブジェクトを作成します。This constructor creates a Regex object that uses the default time-out value of the application domain in which it is created. タイムアウト値がアプリケーションドメインに対して定義されていない場合、 Regexオブジェクトは値InfiniteMatchTimeoutを使用して、操作がタイムアウトしないようにします。オブジェクトをRegex作成するために推奨さRegex(String, RegexOptions, TimeSpan)れるコンストラクターはです。これにより、タイムアウト間隔を設定できます。If a time-out value has not been defined for the application domain, the Regex object uses the value InfiniteMatchTimeout, which prevents the operation from timing out. The recommended constructor for creating a Regex object is Regex(String, RegexOptions, TimeSpan), which lets you set the time-out interval.

こちらもご覧ください

Regex(String, RegexOptions, TimeSpan) Regex(String, RegexOptions, TimeSpan) Regex(String, RegexOptions, TimeSpan) Regex(String, RegexOptions, TimeSpan)

パターンを変更するオプションと、パターン マッチ メソッドがタイムアウトするまでに一致を試みる時間を指定する値を使用して、指定した正規表現の Regex クラスの新しいインスタンスを初期化します。Initializes a new instance of the Regex class for the specified regular expression, with options that modify the pattern and a value that specifies how long a pattern matching method should attempt a match before it times out.

public:
 Regex(System::String ^ pattern, System::Text::RegularExpressions::RegexOptions options, TimeSpan matchTimeout);
public Regex (string pattern, System.Text.RegularExpressions.RegexOptions options, TimeSpan matchTimeout);
new System.Text.RegularExpressions.Regex : string * System.Text.RegularExpressions.RegexOptions * TimeSpan -> System.Text.RegularExpressions.Regex
Public Sub New (pattern As String, options As RegexOptions, matchTimeout As TimeSpan)

パラメーター

pattern
String String String String

一致させる正規表現パターン。The regular expression pattern to match.

options
RegexOptions RegexOptions RegexOptions RegexOptions

正規表現を変更する列挙値のビットごとの組み合わせ。A bitwise combination of the enumeration values that modify the regular expression.

matchTimeout
TimeSpan TimeSpan TimeSpan TimeSpan

タイムアウト期間、またはメソッドがタイムアウトしないことを示す InfiniteMatchTimeoutA time-out interval, or InfiniteMatchTimeout to indicate that the method should not time out.

例外

正規表現の解析エラーが発生しました。A regular expression parsing error occurred.

options は有効な RegexOptions 値ではありません。options is not a valid RegexOptions value.

または-or- matchTimeout が負の値か、0 か、または約 24 日を超えています。matchTimeout is negative, zero, or greater than approximately 24 days.

次の例ではRegex(String, RegexOptions, TimeSpan) 、コンストラクターを呼び出しRegexて、1秒のタイムアウト値を持つオブジェクトをインスタンス化します。The following example calls the Regex(String, RegexOptions, TimeSpan) constructor to instantiate a Regex object with a time-out value of one second. 正規表現パターン (a+)+$は、行の末尾にある 1 つ以上の "a" 文字の 1 つ以上のシーケンスに一致しますが、過度なバックトラッキングの対象になります。The regular expression pattern (a+)+$, which matches one or more sequences of one or more "a" characters at the end of a line, is subject to excessive backtracking. RegexMatchTimeoutExceptionがスローされた場合、この例ではタイムアウト値を3秒の最大値まで増やします。If a RegexMatchTimeoutException is thrown, the example increases the time-out value up to the maximum value of three seconds. それ以外の場合は、パターンに一致する試行を破棄します。Otherwise, it abandons the attempt to match the pattern.

using System;
using System.ComponentModel;
using System.Diagnostics;
using System.Security;
using System.Text.RegularExpressions;
using System.Threading; 

public class Example
{
   const int MaxTimeoutInSeconds = 3;

   public static void Main()
   {
      string pattern = @"(a+)+$";    // DO NOT REUSE THIS PATTERN.
      Regex rgx = new Regex(pattern, RegexOptions.IgnoreCase, TimeSpan.FromSeconds(1));       
      Stopwatch sw = null;
      
      string[] inputs= { "aa", "aaaa>", 
                         "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
                         "aaaaaaaaaaaaaaaaaaaaaa>",
                         "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa>" };
                                 
      foreach (var inputValue in inputs) {
         Console.WriteLine("Processing {0}", inputValue);
         bool timedOut = false;
         do { 
            try {
               sw = Stopwatch.StartNew();
               // Display the result.
               if (rgx.IsMatch(inputValue)) {
                  sw.Stop();
                  Console.WriteLine(@"Valid: '{0}' ({1:ss\.fffffff} seconds)", 
                                    inputValue, sw.Elapsed); 
               }
               else {
                  sw.Stop();
                  Console.WriteLine(@"'{0}' is not a valid string. ({1:ss\.fffff} seconds)", 
                                    inputValue, sw.Elapsed);
               }
            }
            catch (RegexMatchTimeoutException e) {   
               sw.Stop();
               // Display the elapsed time until the exception.
               Console.WriteLine(@"Timeout with '{0}' after {1:ss\.fffff}", 
                                 inputValue, sw.Elapsed);
               Thread.Sleep(1500);       // Pause for 1.5 seconds.

               // Increase the timeout interval and retry.
               TimeSpan timeout = e.MatchTimeout.Add(TimeSpan.FromSeconds(1));
               if (timeout.TotalSeconds > MaxTimeoutInSeconds) {
                  Console.WriteLine("Maximum timeout interval of {0} seconds exceeded.",
                                    MaxTimeoutInSeconds);
                  timedOut = false;
               }
               else {               
                  Console.WriteLine("Changing the timeout interval to {0}", 
                                    timeout); 
                  rgx = new Regex(pattern, RegexOptions.IgnoreCase, timeout);
                  timedOut = true;
               }
            }
         } while (timedOut);
         Console.WriteLine();
      }   
   }
}
// The example displays output like the following :
//    Processing aa
//    Valid: 'aa' (00.0000779 seconds)
//    
//    Processing aaaa>
//    'aaaa>' is not a valid string. (00.00005 seconds)
//    
//    Processing aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
//    Valid: 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' (00.0000043 seconds)
//    
//    Processing aaaaaaaaaaaaaaaaaaaaaa>
//    Timeout with 'aaaaaaaaaaaaaaaaaaaaaa>' after 01.00469
//    Changing the timeout interval to 00:00:02
//    Timeout with 'aaaaaaaaaaaaaaaaaaaaaa>' after 02.01202
//    Changing the timeout interval to 00:00:03
//    Timeout with 'aaaaaaaaaaaaaaaaaaaaaa>' after 03.01043
//    Maximum timeout interval of 3 seconds exceeded.
//    
//    Processing aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa>
//    Timeout with 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa>' after 03.01018
//    Maximum timeout interval of 3 seconds exceeded.
Imports System.ComponentModel
Imports System.Diagnostics
Imports System.Security
Imports System.Text.RegularExpressions
Imports System.Threading 

Module Example
   Const MaxTimeoutInSeconds As Integer = 3
   
   Public Sub Main()
      Dim pattern As String = "(a+)+$"    ' DO NOT REUSE THIS PATTERN.
      Dim rgx As New Regex(pattern, RegexOptions.IgnoreCase, TimeSpan.FromSeconds(1))       
      Dim sw As Stopwatch = Nothing
      
      Dim inputs() As String = { "aa", "aaaa>", 
                                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
                                 "aaaaaaaaaaaaaaaaaaaaaa>",
                                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa>" }
                                 
      For Each inputValue In inputs
         Console.WriteLine("Processing {0}", inputValue)
         Dim timedOut As Boolean = False
         Do 
            Try
               sw = Stopwatch.StartNew()
               ' Display the result.
               If rgx.IsMatch(inputValue) Then
                  sw.Stop()
                  Console.WriteLine("Valid: '{0}' ({1:ss\.fffffff} seconds)", 
                                    inputValue, sw.Elapsed) 
               Else
                  sw.Stop()
                  Console.WriteLine("'{0}' is not a valid string. ({1:ss\.fffff} seconds)", 
                                    inputValue, sw.Elapsed)
               End If
            Catch e As RegexMatchTimeoutException   
               sw.Stop()
               ' Display the elapsed time until the exception.
               Console.WriteLine("Timeout with '{0}' after {1:ss\.fffff}", 
                                 inputValue, sw.Elapsed)
               Thread.Sleep(1500)       ' Pause for 1.5 seconds.

               ' Increase the timeout interval and retry.
               Dim timeout As TimeSpan = e.MatchTimeout.Add(TimeSpan.FromSeconds(1))
               If timeout.TotalSeconds > MaxTimeoutInSeconds Then
                  Console.WriteLine("Maximum timeout interval of {0} seconds exceeded.",
                                    MaxTimeoutInSeconds)
                  timedOut = False
               Else                
                  Console.WriteLine("Changing the timeout interval to {0}", 
                                    timeout) 
                  rgx = New Regex(pattern, RegexOptions.IgnoreCase, timeout)
                  timedOut = True
               End If
            End Try
         Loop While timedOut
         Console.WriteLine()
      Next   
   End Sub 
End Module
' The example displays output like the following:
'    Processing aa
'    Valid: 'aa' (00.0000779 seconds)
'    
'    Processing aaaa>
'    'aaaa>' is not a valid string. (00.00005 seconds)
'    
'    Processing aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
'    Valid: 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' (00.0000043 seconds)
'    
'    Processing aaaaaaaaaaaaaaaaaaaaaa>
'    Timeout with 'aaaaaaaaaaaaaaaaaaaaaa>' after 01.00469
'    Changing the timeout interval to 00:00:02
'    Timeout with 'aaaaaaaaaaaaaaaaaaaaaa>' after 02.01202
'    Changing the timeout interval to 00:00:03
'    Timeout with 'aaaaaaaaaaaaaaaaaaaaaa>' after 03.01043
'    Maximum timeout interval of 3 seconds exceeded.
'    
'    Processing aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa>
'    Timeout with 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa>' after 03.01018
'    Maximum timeout interval of 3 seconds exceeded.

注釈

パラメーター patternは、一致させる文字列をシンボリックに記述する正規表現言語要素で構成されます。The pattern parameter consists of regular expression language elements that symbolically describe the string to match. 正規表現の詳細については、「正規表現正規表現言語の .NET Framework」を参照してください。For more information about regular expressions, see the .NET Framework Regular Expressions and Regular Expression Language - Quick Reference topics.

Regexオブジェクトは変更できません。つまり、オブジェクトを作成するときに定義した一致パターンにのみ使用できます。A Regex object is immutable, which means that it can be used only for the match pattern that you define when you create it. ただし、再コンパイルせずに何回でも使用できます。However, it can be used any number of times without being recompiled.

パラメーター matchTimeoutは、パターン一致メソッドがタイムアウトする前に一致を検索する期間を指定します。この期間内に一致するものが見つからない場合、パターン一致メソッドは例外RegexMatchTimeoutExceptionをスローします。The matchTimeout parameter specifies how long a pattern-matching method should try to find a match before it times out. If no match is found in that time interval, the pattern-matching method throws a RegexMatchTimeoutException exception. matchTimeoutRegexオブジェクトが作成されるアプリケーションドメインに対して定義されている既定のタイムアウト値をオーバーライドします。matchTimeout overrides any default time-out value defined for the application domain in which the Regex object is created. matchTimeoutタイムアウト間隔を観察するインスタンスパターン一致メソッドには、次のものが含まれます。The instance pattern-matching methods that observe the matchTimeout time-out interval include the following:

タイムアウト間隔を設定すると、過度なバックトラッキングに依存している正規表現が、ほぼ一致する入力を処理するときに応答を停止することを防ぎます。Setting a time-out interval prevents regular expressions that rely on excessive backtracking from appearing to stop responding when they process input that contains near matches. 詳細については、「正規表現とバックトラッキングのベストプラクティス」を参照してください。For more information, see Best Practices for Regular Expressions and Backtracking. 妥当なタイムアウト期間を設定するには、次の要因を考慮してください。To set a reasonable time-out interval, consider the following factors:

  • 正規表現パターンの長さと複雑さ。The length and complexity of the regular expression pattern. 長くて複雑な正規表現の方が、短くて単純な式よりも多くの時間を必要とします。Longer and more complex regular expressions require more time than shorter and simpler ones.

  • 予想されるコンピューター負荷。The expected machine load. CPU とメモリの使用率が高いシステムでは、処理に時間がかかります。Processing takes more time on systems that have high CPU and memory utilization.

注意 (呼び出し元)

matchTimeoutパラメーターには、2秒などの適切な値を設定することをお勧めします。We recommend that you set the matchTimeout parameter to an appropriate value, such as two seconds. を指定InfiniteMatchTimeoutしてタイムアウトを無効にすると、正規表現エンジンのパフォーマンスが若干向上します。If you disable time-outs by specifying InfiniteMatchTimeout, the regular expression engine offers slightly better performance. ただし、次の条件下でのみタイムアウトを無効にする必要があります。However, you should disable time-outs only under the following conditions: -正規表現によって処理される入力が既知の信頼できるソースから派生した場合、または静的なテキストで構成されている場合。- When the input processed by a regular expression is derived from a known and trusted source or consists of static text. これにより、ユーザーが動的に入力したテキストは除外されます。This excludes text that has been dynamically input by users.

-正規表現パターンが完全にテストされ、一致、一致しない、および近い一致を効率的に処理できるようになった場合。- When the regular expression pattern has been thoroughly tested to ensure that it efficiently handles matches, non-matches, and near matches.

-正規表現パターンに、ほぼ一致を処理するときに過度なバックトラッキングを発生させることがわかっている言語要素が含まれていない場合。- When the regular expression pattern contains no language elements that are known to cause excessive backtracking when processing a near match.

こちらもご覧ください

適用対象