Regex.Replace メソッド

定義

指定した入力文字列内で正規表現パターンに一致する文字列を、指定した置換文字列に置き換えます。In a specified input string, replaces strings that match a regular expression pattern with a specified replacement string.

オーバーロード

Replace(String, String, MatchEvaluator, RegexOptions, TimeSpan)

指定した入力文字列内で、指定した正規表現に一致するすべての部分文字列を、MatchEvaluator デリゲートによって返される文字列に置き換えます。In a specified input string, replaces all substrings that match a specified regular expression with a string returned by a MatchEvaluator delegate. 追加のパラメーターでは、一致が見つからない場合に一致操作とタイムアウト間隔を変更するオプションを指定します。Additional parameters specify options that modify the matching operation and a time-out interval if no match is found.

Replace(String, String, String, RegexOptions, TimeSpan)

指定した入力文字列内で指定した正規表現に一致するすべての文字列を、指定した置換文字列に置換します。In a specified input string, replaces all strings that match a specified regular expression with a specified replacement string. 追加のパラメーターでは、一致が見つからない場合に一致操作とタイムアウト間隔を変更するオプションを指定します。Additional parameters specify options that modify the matching operation and a time-out interval if no match is found.

Replace(String, MatchEvaluator, Int32, Int32)

指定した入力部分文字列内で正規表現パターンに一致する文字列を、指定した最大回数だけ、MatchEvaluator デリゲートによって返される文字列に置き換えます。In a specified input substring, replaces a specified maximum number of strings that match a regular expression pattern with a string returned by a MatchEvaluator delegate.

Replace(String, String, MatchEvaluator, RegexOptions)

指定した入力文字列内で、指定した正規表現に一致するすべての文字列を MatchEvaluator デリゲートによって返される文字列に置き換えます。In a specified input string, replaces all strings that match a specified regular expression with a string returned by a MatchEvaluator delegate. 指定したオプションで、一致操作を変更します。Specified options modify the matching operation.

Replace(String, String, Int32, Int32)

指定した入力部分文字列内で正規表現パターンに一致する文字列を、指定した最大回数だけ、指定した置換文字列に置換します。In a specified input substring, replaces a specified maximum number of strings that match a regular expression pattern with a specified replacement string.

Replace(String, String, String, RegexOptions)

指定した入力文字列内で指定した正規表現に一致するすべての文字列を、指定した置換文字列に置換します。In a specified input string, replaces all strings that match a specified regular expression with a specified replacement string. 指定したオプションで、一致操作を変更します。Specified options modify the matching operation.

Replace(String, String, MatchEvaluator)

指定した入力文字列内で、指定した正規表現に一致するすべての文字列を MatchEvaluator デリゲートによって返される文字列に置き換えます。In a specified input string, replaces all strings that match a specified regular expression with a string returned by a MatchEvaluator delegate.

Replace(String, String, String)

指定した入力文字列内で指定した正規表現に一致するすべての文字列を、指定した置換文字列に置換します。In a specified input string, replaces all strings that match a specified regular expression with a specified replacement string.

Replace(String, String, Int32)

指定した入力文字列内で正規表現パターンに一致する文字列を、指定した最大回数だけ、指定した置換文字列に置換します。In a specified input string, replaces a specified maximum number of strings that match a regular expression pattern with a specified replacement string.

Replace(String, MatchEvaluator)

指定した入力文字列内で、指定した正規表現に一致するすべての文字列を MatchEvaluator デリゲートによって返される文字列に置き換えます。In a specified input string, replaces all strings that match a specified regular expression with a string returned by a MatchEvaluator delegate.

Replace(String, String)

指定した入力文字列内で正規表現パターンに一致するすべての文字列を、指定した置換文字列に置換します。In a specified input string, replaces all strings that match a regular expression pattern with a specified replacement string.

Replace(String, MatchEvaluator, Int32)

指定した入力文字列内で正規表現パターンに一致する文字列を、指定した最大回数だけ、MatchEvaluator デリゲートによって返される文字列に置き換えます。In a specified input string, replaces a specified maximum number of strings that match a regular expression pattern with a string returned by a MatchEvaluator delegate.

Replace(String, String, MatchEvaluator, RegexOptions, TimeSpan)

指定した入力文字列内で、指定した正規表現に一致するすべての部分文字列を、MatchEvaluator デリゲートによって返される文字列に置き換えます。In a specified input string, replaces all substrings that match a specified regular expression with a string returned by a MatchEvaluator delegate. 追加のパラメーターでは、一致が見つからない場合に一致操作とタイムアウト間隔を変更するオプションを指定します。Additional parameters specify options that modify the matching operation and a time-out interval if no match is found.

public:
 static System::String ^ Replace(System::String ^ input, System::String ^ pattern, System::Text::RegularExpressions::MatchEvaluator ^ evaluator, System::Text::RegularExpressions::RegexOptions options, TimeSpan matchTimeout);
public static string Replace (string input, string pattern, System.Text.RegularExpressions.MatchEvaluator evaluator, System.Text.RegularExpressions.RegexOptions options, TimeSpan matchTimeout);
static member Replace : string * string * System.Text.RegularExpressions.MatchEvaluator * System.Text.RegularExpressions.RegexOptions * TimeSpan -> string
Public Shared Function Replace (input As String, pattern As String, evaluator As MatchEvaluator, options As RegexOptions, matchTimeout As TimeSpan) As String

パラメーター

input
String

一致する対象を検索する文字列。The string to search for a match.

pattern
String

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

evaluator
MatchEvaluator

各一致文字列を調べ、元の一致文字列または置換文字列のどちらかを返すカスタム メソッド。A custom method that examines each match and returns either the original matched string or a replacement string.

options
RegexOptions

一致オプションを指定する列挙値のビットごとの組み合わせ。A bitwise combination of enumeration values that provide options for matching.

matchTimeout
TimeSpan

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

戻り値

一致する各文字列が置換文字列に置き換えられる以外は入力文字列と同じである新しい文字列。A new string that is identical to the input string, except that the replacement string takes the place of each matched string. pattern が現在のインスタンス内で一致しない場合、メソッドは現在のインスタンスを変更せずに返します。If pattern is not matched in the current instance, the method returns the current instance unchanged.

例外

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

inputpattern、または evaluatornull です。input, pattern, or evaluator is null.

options は、RegexOptions 値のビットごとの正しい組み合わせではありません。options is not a valid bitwise combination of RegexOptions values.

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

タイムアウトが発生しました。A time-out occurred. タイムアウトの詳細については、「解説」をご覧ください。For more information about time-outs, see the Remarks section.

次の例では、正規表現を使用して文字列から個々の単語を抽出しMatchEvaluator 、デリゲートを使用してWordScramble 、単語内の個々の文字をスクランブルするという名前のメソッドを呼び出します。The following example uses a regular expression to extract the individual words from a string, and then uses a MatchEvaluator delegate to call a method named WordScramble that scrambles the individual letters in the word. これを行うためにWordScramble 、メソッドは、一致する文字を含む配列を作成します。To do this, the WordScramble method creates an array that contains the characters in the match. また、ランダムな浮動小数点数を設定する並列配列も作成します。It also creates a parallel array that it populates with random floating-point numbers. 配列は、 Array.Sort<TKey,TValue>(TKey[], TValue[], IComparer<TKey>)メソッドを呼び出すことによって並べ替えられ、並べ替えられた配列Stringはクラスコンストラクターへの引数として提供されます。The arrays are sorted by calling the Array.Sort<TKey,TValue>(TKey[], TValue[], IComparer<TKey>) method, and the sorted array is provided as an argument to a String class constructor. この新しく作成された文字列は、 WordScrambleメソッドによって返されます。This newly created string is then returned by the WordScramble method. 正規表現パターン\w+は、1個以上の単語文字と一致します。正規表現エンジンは、空白文字など、単語以外の文字が見つかるまで、一致に文字を追加し続けます。The regular expression pattern \w+ matches one or more word characters; the regular expression engine will continue to add characters to the match until it encounters a non-word character, such as a white-space character. メソッドのReplace(String, String, MatchEvaluator, RegexOptions)呼び出しには、 RegexOptions.IgnorePatternWhitespace正規表現エンジンによって正規表現パターン\w+ # Matches all the characters in a word.のコメントが無視されるようにオプションが含まれています。The call to the Replace(String, String, MatchEvaluator, RegexOptions) method includes the RegexOptions.IgnorePatternWhitespace option so that the comment in the regular expression pattern \w+ # Matches all the characters in a word. is ignored by the regular expression engine.

using System;
using System.Collections;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string words = "letter alphabetical missing lack release " + 
                     "penchant slack acryllic laundry cease";
      string pattern = @"\w+  # Matches all the characters in a word.";                            
      MatchEvaluator evaluator = new MatchEvaluator(WordScrambler);
      Console.WriteLine("Original words:");
      Console.WriteLine(words);
      Console.WriteLine();
      try {
         Console.WriteLine("Scrambled words:");
         Console.WriteLine(Regex.Replace(words, pattern, evaluator, 
                                         RegexOptions.IgnorePatternWhitespace,
                                         TimeSpan.FromSeconds(.25)));      
      }
      catch (RegexMatchTimeoutException) {
         Console.WriteLine("Word Scramble operation timed out.");
         Console.WriteLine("Returned words:");
      }
   }

   public static string WordScrambler(Match match)
   {
      int arraySize = match.Value.Length;
      // Define two arrays equal to the number of letters in the match.
      double[] keys = new double[arraySize];
      char[] letters = new char[arraySize];
      
      // Instantiate random number generator'
      Random rnd = new Random();
      
      for (int ctr = 0; ctr < match.Value.Length; ctr++)
      {
         // Populate the array of keys with random numbers.
         keys[ctr] = rnd.NextDouble();
         // Assign letter to array of letters.
         letters[ctr] = match.Value[ctr];
      }         
      Array.Sort(keys, letters, 0, arraySize, Comparer.Default);      
      return new String(letters);
   }
}
// The example displays output similar to the following:
//    Original words:
//    letter alphabetical missing lack release penchant slack acryllic laundry cease
//    
//    Scrambled words:
//    etlert liahepalbcat imsgsni alkc ereelsa epcnnaht lscak cayirllc alnyurd ecsae
Imports System.Collections
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim words As String = "letter alphabetical missing lack release " + _
                            "penchant slack acryllic laundry cease"
      Dim pattern As String = "\w+  # Matches all the characters in a word."                            
      Dim evaluator As MatchEvaluator = AddressOf WordScrambler
      Console.WriteLine("Original words:")
      Console.WriteLine(words)
      Try
         Console.WriteLine("Scrambled words:")
         Console.WriteLine(Regex.Replace(words, pattern, evaluator,
                                         RegexOptions.IgnorePatternWhitespace,
                                         TimeSpan.FromSeconds(.25)))      
      Catch e As RegexMatchTimeoutException
         Console.WriteLine("Word Scramble operation timed out.")
         Console.WriteLine("Returned words:")
      End Try   
   End Sub
   
   Public Function WordScrambler(match As Match) As String
      Dim arraySize As Integer = match.Value.Length - 1
      ' Define two arrays equal to the number of letters in the match.
      Dim keys(arraySize) As Double
      Dim letters(arraySize) As Char
      
      ' Instantiate random number generator'
      Dim rnd As New Random()
      
      For ctr As Integer = 0 To match.Value.Length - 1
         ' Populate the array of keys with random numbers.
         keys(ctr) = rnd.NextDouble()
         ' Assign letter to array of letters.
         letters(ctr) = match.Value.Chars(ctr)
      Next         
      Array.Sort(keys, letters, 0, arraySize, Comparer.Default)      
      Return New String(letters)
   End Function
End Module
' The example displays output similar to the following:
'    Original words:
'    letter alphabetical missing lack release penchant slack acryllic laundry cease
'    
'    Scrambled words:
'    etlert liahepalbcat imsgsni alkc ereelsa epcnnaht lscak cayirllc alnyurd ecsae

注釈

Regex.Replace(String, String, MatchEvaluator, RegexOptions)メソッドは、次の条件のいずれかに該当する場合に正規表現の一致を置き換える場合に便利です。The Regex.Replace(String, String, MatchEvaluator, RegexOptions) method is useful for replacing a regular expression match if any of the following conditions is true:

  • 置換文字列を正規表現置換パターンで簡単に指定できない場合は。If the replacement string cannot readily be specified by a regular expression replacement pattern.

  • 置換文字列が、一致した文字列に対して実行された処理の結果である場合は。If the replacement string results from some processing performed on the matched string.

  • 置換文字列が条件付き処理によって生成される場合は。If the replacement string results from conditional processing.

メソッドは、 Regex.Matches(String, String, RegexOptions)メソッドを呼び出し、返さMatchCollectionれたコレクションMatch内の各オブジェクトをevaluatorデリゲートに渡すことと同じです。The method is equivalent to calling the Regex.Matches(String, String, RegexOptions) method and passing each Match object in the returned MatchCollection collection to the evaluator delegate.

パラメーター 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 .NET Framework Regular Expressions and Regular Expression Language - Quick Reference.

evaluatorパラメーターは、定義したカスタムメソッドのデリゲートであり、それぞれの一致を調べます。The evaluator parameter is the delegate for a custom method that you define and that examines each match. カスタムメソッドには、 MatchEvaluatorデリゲートに一致する次のシグネチャが必要です。The custom method must have the following signature to match the MatchEvaluator delegate.

public string MatchEvaluatorMethod(Match match)
Public Function MatchEvaluatorMethod(match As Match) As String

カスタムメソッドは、一致した入力を置き換える文字列を返します。Your custom method returns a string that replaces the matched input.

パラメーターにをRightToLeft指定した場合、一致の検索は入力文字列の末尾から開始され、左に移動します。それ以外の場合は、入力文字列の先頭から検索が開始され、右に移動します。 optionsIf you specify RightToLeft for the options parameter, the search for matches begins at the end of the input string and moves left; otherwise, the search begins at the start of the input string and moves right.

パラメーター matchTimeoutは、パターン一致メソッドがタイムアウトする前に一致を検索する期間を指定します。タイムアウト間隔を設定すると、過度なバックトラッキングに依存している正規表現は、"近い一致を含む入力を処理するときに応答を停止します。" になります。The matchTimeout parameter specifies how long a pattern matching method should try to find a match before it times out. 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. この期間内に一致するものが見つからない場合、メソッドはRegexMatchTimeoutException例外をスローします。If no match is found in that time interval, the method throws a RegexMatchTimeoutException exception. matchTimeoutメソッドを実行するアプリケーションドメインに対して定義されている既定のタイムアウト値をオーバーライドします。matchTimeout overrides any default time-out value defined for the application domain in which the method executes.

一致するものがinputない場合、メソッドは変更なしで返されるためObject.ReferenceEquals 、メソッドを使用して、メソッドが入力文字列に置換を行ったかどうかを判断できます。Because the method returns input unchanged if there is no match, you can use the Object.ReferenceEquals method to determine whether the method has made any replacements to the input string.

注意 (呼び出し元)

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.

こちらもご覧ください

Replace(String, String, String, RegexOptions, TimeSpan)

指定した入力文字列内で指定した正規表現に一致するすべての文字列を、指定した置換文字列に置換します。In a specified input string, replaces all strings that match a specified regular expression with a specified replacement string. 追加のパラメーターでは、一致が見つからない場合に一致操作とタイムアウト間隔を変更するオプションを指定します。Additional parameters specify options that modify the matching operation and a time-out interval if no match is found.

public:
 static System::String ^ Replace(System::String ^ input, System::String ^ pattern, System::String ^ replacement, System::Text::RegularExpressions::RegexOptions options, TimeSpan matchTimeout);
public static string Replace (string input, string pattern, string replacement, System.Text.RegularExpressions.RegexOptions options, TimeSpan matchTimeout);
static member Replace : string * string * string * System.Text.RegularExpressions.RegexOptions * TimeSpan -> string
Public Shared Function Replace (input As String, pattern As String, replacement As String, options As RegexOptions, matchTimeout As TimeSpan) As String

パラメーター

input
String

一致する対象を検索する文字列。The string to search for a match.

pattern
String

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

replacement
String

置換文字列。The replacement string.

options
RegexOptions

一致オプションを指定する列挙値のビットごとの組み合わせ。A bitwise combination of the enumeration values that provide options for matching.

matchTimeout
TimeSpan

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

戻り値

一致する各文字列が置換文字列に置き換えられる以外は入力文字列と同じである新しい文字列。A new string that is identical to the input string, except that the replacement string takes the place of each matched string. pattern が現在のインスタンス内で一致しない場合、メソッドは現在のインスタンスを変更せずに返します。If pattern is not matched in the current instance, the method returns the current instance unchanged.

例外

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

inputpattern、または replacementnull です。input, pattern, or replacement is null.

options は、RegexOptions 値のビットごとの正しい組み合わせではありません。options is not a valid bitwise combination of RegexOptions values.

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

タイムアウトが発生しました。A time-out occurred. タイムアウトの詳細については、「解説」をご覧ください。For more information about time-outs, see the Remarks section.

次の例ではReplace(String, String, String, RegexOptions, TimeSpan) 、メソッドを使用して、UNC パスのローカルコンピューターとドライブ名をローカルファイルパスに置き換えます。The following example uses the Replace(String, String, String, RegexOptions, TimeSpan) method to replace the local machine and drive names in a UNC path with a local file path. この正規表現ではEnvironment.MachineName 、プロパティを使用してローカルコンピューターの名前をEnvironment.GetLogicalDrives指定し、メソッドを使用して論理ドライブの名前を含めています。The regular expression uses the Environment.MachineName property to include the name of the local computer and the Environment.GetLogicalDrives method to include the names of the logical drives. すべての正規表現文字列比較では大文字と小文字が区別されず、0.5 秒で一致するものが見つからない場合は、1回の置換操作がタイムアウトになります。All regular expression string comparisons are case-insensitive, and any single replacement operation times out if a match cannot be found in 0.5 second. 例を正しく実行するには、リテラル文字列 "MyMachine" をローカルコンピューター名に置き換える必要があります。To run the example successfully, you should replace the literal string "MyMachine" with your local machine name.

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      // Get drives available on local computer and form into a single character expression.
      string[] drives = Environment.GetLogicalDrives();
      string driveNames = String.Empty;
      foreach (string drive in drives)
         driveNames += drive.Substring(0,1);
      // Create regular expression pattern dynamically based on local machine information.
      string pattern = @"\\\\" + Environment.MachineName + @"(?:\.\w+)*\\([" + driveNames + @"])\$";

      string replacement = "$1:";
      string[] uncPaths = { @"\\MyMachine.domain1.mycompany.com\C$\ThingsToDo.txt", 
                            @"\\MyMachine\c$\ThingsToDo.txt", 
                            @"\\MyMachine\d$\documents\mydocument.docx" }; 
      
      foreach (string uncPath in uncPaths)
      {
         Console.WriteLine("Input string: " + uncPath);
         string localPath = null;
         try {
            localPath = Regex.Replace(uncPath, pattern, replacement, 
                                      RegexOptions.IgnoreCase,
                                      TimeSpan.FromSeconds(0.5));
            Console.WriteLine("Returned string: " + localPath);
         }
         catch (RegexMatchTimeoutException) {
            Console.WriteLine("The replace operation timed out.");
            Console.WriteLine("Returned string: " + localPath);
            if (uncPath.Equals(localPath)) 
               Console.WriteLine("Equal to original path.");
            else
               Console.WriteLine("Original string: " + uncPath);
         }
         Console.WriteLine();
      }
   }
}
// The example displays the following output if run on a machine whose name is
// MyMachine:
//    Input string: \\MyMachine.domain1.mycompany.com\C$\ThingsToTo.txt
//    Returned string: C:\ThingsToDo.txt
//    
//    Input string: \\MyMachine\c$\ThingsToDo.txt
//    Returned string: c:\ThingsToDo.txt
//    
//    Input string: \\MyMachine\d$\documents\mydocument.docx
//    Returned string: d:\documents\mydocument.docx
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      ' Get drives available on local computer and form into a single character expression.
      Dim drives() As String = Environment.GetLogicalDrives()
      Dim driveNames As String = Nothing
      For Each drive As String In drives
         driveNames += drive.Substring(0,1)
      Next
      ' Create regular expression pattern dynamically based on local machine information.
      Dim pattern As String = "\\\\" + Environment.MachineName + "(?:\.\w+)*\\([" + driveNames + "])\$"

      Dim replacement As String = "$1:"
      Dim uncPaths() AS String = {"\\MyMachine.domain1.mycompany.com\C$\ThingsToDo.txt", _
                                  "\\MyMachine\c$\ThingsToDo.txt", _
                                  "\\MyMachine\d$\documents\mydocument.docx" } 
      
      For Each uncPath As String In uncPaths
         Console.WriteLine("Input string: " + uncPath)
         Dim localPath As String = Nothing
         Try
            localPath = Regex.Replace(uncPath, pattern, replacement, 
                                                               RegexOptions.IgnoreCase,
                                                               TimeSpan.FromSeconds(0.5))
            Console.WriteLine("Returned string: " + localPath)         
         Catch e As RegexMatchTimeoutException
            Console.WriteLine("The replace operation timed out.")
            Console.WriteLine("Returned string: " + localPath)
            If uncPath.Equals(localPath) Then 
               Console.WriteLine("Equal to original path.")
            Else
               Console.WriteLine("Original string: " + uncPath)
            End If
         End Try         
         Console.WriteLine()
      Next
   End Sub
End Module
' The example displays the following output if run on a machine whose name is
' MyMachine:
'    Input string: \\MyMachine.domain1.mycompany.com\C$\ThingsToTo.txt
'    Returned string: C:\ThingsToDo.txt
'    
'    Input string: \\MyMachine\c$\ThingsToDo.txt
'    Returned string: c:\ThingsToDo.txt
'    
'    Input string: \\MyMachine\d$\documents\mydocument.docx
'    Returned string: d:\documents\mydocument.docx

正規表現パターンは、次の式によって定義されます。The regular expression pattern is defined by the following expression:

"\\\\" + Environment.MachineName + "(?:\.\w+)*\\([" + driveNames + "])\$"

次の表に、正規表現パターンがどのように解釈されるかを示します。The following table shows how the regular expression pattern is interpreted.

パターンPattern 説明Description
\\\\ 2つの連続する\円記号 () 文字と一致します。\\\\ Match two consecutive backslash (\) characters. バックスラッシュ文字はエスケープ文字として解釈されるため、各円記号は別の円記号でエスケープする必要があります。Because the backslash character is interpreted as the escape character, each backslash must be escaped with another backslash.
+ Environment.MachineName + Environment.MachineNameプロパティによって返された文字列と一致します。Match the string that is returned by the Environment.MachineName property.
(?:\.\w+)* ピリオド (.) 文字の後に1個以上の単語文字が続くパターンに一致します。Match the period (.) character followed by one or more word characters. この一致は、0回以上発生する可能性があります。This match can occur zero or more times. 一致した部分式はキャプチャされません。The matched subexpression is not captured.
\\ 円記号 (\) 文字と一致します。\\ Match a backslash (\) character.
([" + driveNames + "]) 個々のドライブ文字で構成される文字クラスと一致します。Match the character class that consists of the individual drive letters. この一致は最初にキャプチャされた部分式です。This match is the first captured subexpression.
\$ リテラルドル記号 ($) 文字と一致します。Match the literal dollar sign ($) character.

置換パターン$1は、一致した文字列全体を最初にキャプチャされた部分式と置き換えます。The replacement pattern $1 replaces the entire match with the first captured subexpression. つまり、UNC コンピューターとドライブ名はドライブ文字で置き換えられます。That is, it replaces the UNC machine and drive name with the drive letter.

注釈

静的Replaceメソッドは、指定されたRegex正規表現パターンを使用してオブジェクトを構築し、 Replaceインスタンスメソッドを呼び出すことと同じです。The static Replace methods are equivalent to constructing a Regex object with the specified regular expression pattern and calling the instance method Replace.

パラメーター 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 .NET Framework Regular Expressions and Regular Expression Language - Quick Reference. パラメーターにをRightToLeft指定した場合、一致の検索は入力文字列の末尾から開始され、左に移動します。それ以外の場合は、入力文字列の先頭から検索が開始され、右に移動します。 optionsIf you specify RightToLeft for the options parameter, the search for matches begins at the end of the input string and moves left; otherwise, the search begins at the start of the input string and moves right.

パラメーターでは、内のinput各一致文字列を置き換える文字列を指定します。 replacementThe replacement parameter specifies the string that is to replace each match in input. replacementは、リテラルテキストと置換の任意の組み合わせで構成できます。replacement can consist of any combination of literal text and substitutions. たとえば、置換パターンa*${test}bでは、文字列 "a *" の後に、 testキャプチャグループに一致する部分文字列 (存在する場合) と、その後に続く文字列 "b" が挿入されます。For example, the replacement pattern a*${test}b inserts the string "a*" followed by the substring that is matched by the test capturing group, if any, followed by the string "b". * 文字は、置換パターン内では、メタ文字として認識されません。The * character is not recognized as a metacharacter within a replacement pattern.

注意

置換は、置換パターンで認識される唯一の正規表現言語要素です。Substitutions are the only regular expression language elements that are recognized in a replacement pattern. 他のすべての正規表現言語要素 (文字エスケープを含む) は、正規表現パターンでのみ許可され、置換パターンでは認識されません。All other regular expression language elements, including character escapes, are allowed in regular expression patterns only and are not recognized in replacement patterns.

パラメーター matchTimeoutは、パターン一致メソッドがタイムアウトする前に一致を検索する期間を指定します。タイムアウト間隔を設定すると、過度なバックトラッキングに依存している正規表現が、ほぼ一致する入力を処理するときに応答を停止することを防ぎます。The matchTimeout parameter specifies how long a pattern matching method should try to find a match before it times out. 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. この期間内に一致するものが見つからない場合、メソッドはRegexMatchTimeoutException例外をスローします。If no match is found in that time interval, the method throws a RegexMatchTimeoutException exception. matchTimeoutメソッドを実行するアプリケーションドメインに対して定義されている既定のタイムアウト値をオーバーライドします。matchTimeout overrides any default time-out value defined for the application domain in which the method executes.

一致するものがinputない場合、メソッドは変更なしで返されるためObject.ReferenceEquals 、メソッドを使用して、メソッドが入力文字列に置換を行ったかどうかを判断できます。Because the method returns input unchanged if there is no match, you can use the Object.ReferenceEquals method to determine whether the method has made any replacements to the input string.

注意 (呼び出し元)

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.

こちらもご覧ください

Replace(String, MatchEvaluator, Int32, Int32)

指定した入力部分文字列内で正規表現パターンに一致する文字列を、指定した最大回数だけ、MatchEvaluator デリゲートによって返される文字列に置き換えます。In a specified input substring, replaces a specified maximum number of strings that match a regular expression pattern with a string returned by a MatchEvaluator delegate.

public:
 System::String ^ Replace(System::String ^ input, System::Text::RegularExpressions::MatchEvaluator ^ evaluator, int count, int startat);
public string Replace (string input, System.Text.RegularExpressions.MatchEvaluator evaluator, int count, int startat);
member this.Replace : string * System.Text.RegularExpressions.MatchEvaluator * int * int -> string
Public Function Replace (input As String, evaluator As MatchEvaluator, count As Integer, startat As Integer) As String

パラメーター

input
String

一致する対象を検索する文字列。The string to search for a match.

evaluator
MatchEvaluator

各一致文字列を調べ、元の一致文字列または置換文字列のどちらかを返すカスタム メソッド。A custom method that examines each match and returns either the original matched string or a replacement string.

count
Int32

置換を実行する最大回数。The maximum number of times the replacement will occur.

startat
Int32

入力文字列中で検索を開始する文字位置。The character position in the input string where the search begins.

戻り値

一致する各文字列が置換文字列に置き換えられる以外は入力文字列と同じである新しい文字列。A new string that is identical to the input string, except that a replacement string takes the place of each matched string. 正規表現パターンが現在のインスタンスで一致しない場合、このメソッドは現在のインスタンスをそのまま返します。If the regular expression pattern is not matched in the current instance, the method returns the current instance unchanged.

例外

input または evaluatornull です。input or evaluator is null.

startat が 0 未満か、input の長さを超えています。startat is less than zero or greater than the length of input.

タイムアウトが発生しました。A time-out occurred. タイムアウトの詳細については、「解説」をご覧ください。For more information about time-outs, see the Remarks section.

注釈

Regex.Replace(String, MatchEvaluator, Int32, Int32)メソッドは、次の条件のいずれかに該当する場合に正規表現の一致を置き換える場合に便利です。The Regex.Replace(String, MatchEvaluator, Int32, Int32) method is useful for replacing a regular expression match if any of the following conditions is true:

  • 置換文字列は、正規表現の置換パターンで簡単に指定することはできません。The replacement string cannot readily be specified by a regular expression replacement pattern.

  • 置換文字列は、一致した文字列に対して何らかの処理が行われた結果になります。The replacement string results from some processing done on the matched string.

  • 置換文字列は、条件付き処理の結果として返されます。The replacement string results from conditional processing.

メソッドはRegex.Matches(String, Int32) 、メソッドを呼び出し、返されMatchCollectionたコレクション内countの最初Matchのオブジェクトをevaluatorデリゲートに渡すことと同じです。The method is equivalent to calling the Regex.Matches(String, Int32) method and passing the first countMatch objects in the returned MatchCollection collection to the evaluator delegate.

正規表現は、現在Regexのオブジェクトのコンストラクターによって定義されたパターンです。The regular expression is the pattern defined by the constructor for the current Regex object.

evaluatorパラメーターは、定義したカスタムメソッドのデリゲートであり、それぞれの一致を調べます。The evaluator parameter is the delegate for a custom method that you define and that examines each match. カスタムメソッドには、 MatchEvaluatorデリゲートに一致する次のシグネチャが必要です。The custom method must have the following signature to match the MatchEvaluator delegate.

public string MatchEvaluatorMethod(Match match)
Public Function MatchEvaluatorMethod(match As Match) As String

カスタムメソッドは、一致した入力を置き換える文字列を返します。Your custom method returns a string that replaces the matched input.

この例外は、置換操作の実行時間が、 Regex.Regex(String, RegexOptions, TimeSpan)コンストラクターで指定されたタイムアウト時間を超えた場合にスローされます。 RegexMatchTimeoutExceptionThe RegexMatchTimeoutException exception is thrown if the execution time of the replacement operation exceeds the time-out interval specified by the Regex.Regex(String, RegexOptions, TimeSpan) constructor. コンストラクターを呼び出すときにタイムアウト間隔を設定しなかった場合は、 Regexオブジェクトが作成されたアプリケーションドメインに対して設定されたタイムアウト値を操作が超えた場合に、例外がスローされます。If you do not set a time-out interval when you call the constructor, the exception is thrown if the operation exceeds any time-out value established for the application domain in which the Regex object is created. Regexコンストラクター呼び出しまたはアプリケーションドメインのプロパティでタイムアウトが定義されていない場合、またはタイムアウト値がRegex.InfiniteMatchTimeoutの場合、例外はスローされません。If no time-out is defined in the Regex constructor call or in the application domain's properties, or if the time-out value is Regex.InfiniteMatchTimeout, no exception is thrown

一致するものがinputない場合、メソッドは変更なしで返されるためObject.ReferenceEquals 、メソッドを使用して、メソッドが入力文字列に置換を行ったかどうかを判断できます。Because the method returns input unchanged if there is no match, you can use the Object.ReferenceEquals method to determine whether the method has made any replacements to the input string.

こちらもご覧ください

Replace(String, String, MatchEvaluator, RegexOptions)

指定した入力文字列内で、指定した正規表現に一致するすべての文字列を MatchEvaluator デリゲートによって返される文字列に置き換えます。In a specified input string, replaces all strings that match a specified regular expression with a string returned by a MatchEvaluator delegate. 指定したオプションで、一致操作を変更します。Specified options modify the matching operation.

public:
 static System::String ^ Replace(System::String ^ input, System::String ^ pattern, System::Text::RegularExpressions::MatchEvaluator ^ evaluator, System::Text::RegularExpressions::RegexOptions options);
public static string Replace (string input, string pattern, System.Text.RegularExpressions.MatchEvaluator evaluator, System.Text.RegularExpressions.RegexOptions options);
static member Replace : string * string * System.Text.RegularExpressions.MatchEvaluator * System.Text.RegularExpressions.RegexOptions -> string
Public Shared Function Replace (input As String, pattern As String, evaluator As MatchEvaluator, options As RegexOptions) As String

パラメーター

input
String

一致する対象を検索する文字列。The string to search for a match.

pattern
String

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

evaluator
MatchEvaluator

各一致文字列を調べ、元の一致文字列または置換文字列のどちらかを返すカスタム メソッド。A custom method that examines each match and returns either the original matched string or a replacement string.

options
RegexOptions

一致オプションを指定する列挙値のビットごとの組み合わせ。A bitwise combination of the enumeration values that provide options for matching.

戻り値

一致する各文字列が置換文字列に置き換えられる以外は入力文字列と同じである新しい文字列。A new string that is identical to the input string, except that a replacement string takes the place of each matched string. pattern が現在のインスタンス内で一致しない場合、メソッドは現在のインスタンスを変更せずに返します。If pattern is not matched in the current instance, the method returns the current instance unchanged.

例外

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

inputpattern、または evaluatornull です。input, pattern, or evaluator is null.

options は、RegexOptions 値のビットごとの正しい組み合わせではありません。options is not a valid bitwise combination of RegexOptions values.

タイムアウトが発生しました。A time-out occurred. タイムアウトの詳細については、「解説」をご覧ください。For more information about time-outs, see the Remarks section.

次の例では、正規表現を使用して文字列から個々の単語を抽出しMatchEvaluator 、デリゲートを使用してWordScramble 、単語内の個々の文字をスクランブルするという名前のメソッドを呼び出します。The following example uses a regular expression to extract the individual words from a string, and then uses a MatchEvaluator delegate to call a method named WordScramble that scrambles the individual letters in the word. これを行うためにWordScramble 、メソッドは、一致する文字を含む配列を作成します。To do this, the WordScramble method creates an array that contains the characters in the match. また、ランダムな浮動小数点数を設定する並列配列も作成します。It also creates a parallel array that it populates with random floating-point numbers. 配列は、 Array.Sort<TKey,TValue>(TKey[], TValue[], IComparer<TKey>)メソッドを呼び出すことによって並べ替えられ、並べ替えられた配列Stringはクラスコンストラクターへの引数として提供されます。The arrays are sorted by calling the Array.Sort<TKey,TValue>(TKey[], TValue[], IComparer<TKey>) method, and the sorted array is provided as an argument to a String class constructor. この新しく作成された文字列は、 WordScrambleメソッドによって返されます。This newly created string is then returned by the WordScramble method. 正規表現パターン\w+は、1個以上の単語文字と一致します。正規表現エンジンは、空白文字など、単語以外の文字が見つかるまで、一致に文字を追加し続けます。The regular expression pattern \w+ matches one or more word characters; the regular expression engine will continue to add characters to the match until it encounters a non-word character, such as a white-space character. メソッドのReplace(String, String, MatchEvaluator, RegexOptions)呼び出しには、 RegexOptions.IgnorePatternWhitespace正規表現エンジンによって正規表現パターン\w+ # Matches all the characters in a word.のコメントが無視されるようにオプションが含まれています。The call to the Replace(String, String, MatchEvaluator, RegexOptions) method includes the RegexOptions.IgnorePatternWhitespace option so that the comment in the regular expression pattern \w+ # Matches all the characters in a word. is ignored by the regular expression engine.

using System;
using System.Collections;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string words = "letter alphabetical missing lack release " + 
                     "penchant slack acryllic laundry cease";
      string pattern = @"\w+  # Matches all the characters in a word.";                            
      MatchEvaluator evaluator = new MatchEvaluator(WordScrambler);
      Console.WriteLine("Original words:");
      Console.WriteLine(words);
      Console.WriteLine();
      Console.WriteLine("Scrambled words:");
      Console.WriteLine(Regex.Replace(words, pattern, evaluator, 
                                      RegexOptions.IgnorePatternWhitespace));      
   }

   public static string WordScrambler(Match match)
   {
      int arraySize = match.Value.Length;
      // Define two arrays equal to the number of letters in the match.
      double[] keys = new double[arraySize];
      char[] letters = new char[arraySize];
      
      // Instantiate random number generator'
      Random rnd = new Random();
      
      for (int ctr = 0; ctr < match.Value.Length; ctr++)
      {
         // Populate the array of keys with random numbers.
         keys[ctr] = rnd.NextDouble();
         // Assign letter to array of letters.
         letters[ctr] = match.Value[ctr];
      }         
      Array.Sort(keys, letters, 0, arraySize, Comparer.Default);      
      return new String(letters);
   }
}
// The example displays output similar to the following:
//    Original words:
//    letter alphabetical missing lack release penchant slack acryllic laundry cease
//    
//    Scrambled words:
//    etlert liahepalbcat imsgsni alkc ereelsa epcnnaht lscak cayirllc alnyurd ecsae
Imports System.Collections
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim words As String = "letter alphabetical missing lack release " + _
                            "penchant slack acryllic laundry cease"
      Dim pattern As String = "\w+  # Matches all the characters in a word."                            
      Dim evaluator As MatchEvaluator = AddressOf WordScrambler
      Console.WriteLine("Original words:")
      Console.WriteLine(words)
      Console.WriteLine("Scrambled words:")
      Console.WriteLine(Regex.Replace(words, pattern, evaluator,
                                      RegexOptions.IgnorePatternWhitespace))      
   End Sub
   
   Public Function WordScrambler(match As Match) As String
      Dim arraySize As Integer = match.Value.Length - 1
      ' Define two arrays equal to the number of letters in the match.
      Dim keys(arraySize) As Double
      Dim letters(arraySize) As Char
      
      ' Instantiate random number generator'
      Dim rnd As New Random()
      
      For ctr As Integer = 0 To match.Value.Length - 1
         ' Populate the array of keys with random numbers.
         keys(ctr) = rnd.NextDouble()
         ' Assign letter to array of letters.
         letters(ctr) = match.Value.Chars(ctr)
      Next         
      Array.Sort(keys, letters, 0, arraySize, Comparer.Default)      
      Return New String(letters)
   End Function
End Module
' The example displays output similar to the following:
'    Original words:
'    letter alphabetical missing lack release penchant slack acryllic laundry cease
'    
'    Scrambled words:
'    etlert liahepalbcat imsgsni alkc ereelsa epcnnaht lscak cayirllc alnyurd ecsae

注釈

Regex.Replace(String, String, MatchEvaluator, RegexOptions)の条件のいずれかに該当する場合は、メソッドを使用して正規表現の一致を置き換えると便利です。The Regex.Replace(String, String, MatchEvaluator, RegexOptions) method is useful for replacing a regular expression match in if any of the following conditions is true:

  • 置換文字列は、正規表現の置換パターンで簡単に指定することはできません。The replacement string cannot readily be specified by a regular expression replacement pattern.

  • 置換文字列は、一致した文字列に対して何らかの処理が行われた結果になります。The replacement string results from some processing done on the matched string.

  • 置換文字列は、条件付き処理の結果として返されます。The replacement string results from conditional processing.

メソッドは、 Regex.Matches(String, String, RegexOptions)メソッドを呼び出し、返さMatchCollectionれたコレクションMatch内の各オブジェクトをevaluatorデリゲートに渡すことと同じです。The method is equivalent to calling the Regex.Matches(String, String, RegexOptions) method and passing each Match object in the returned MatchCollection collection to the evaluator delegate.

パラメーター 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 .NET Framework Regular Expressions and Regular Expression Language - Quick Reference.

evaluatorパラメーターは、定義したカスタムメソッドのデリゲートであり、それぞれの一致を調べます。The evaluator parameter is the delegate for a custom method that you define and that examines each match. カスタムメソッドには、 MatchEvaluatorデリゲートに一致する次のシグネチャが必要です。The custom method must have the following signature to match the MatchEvaluator delegate.

public string MatchEvaluatorMethod(Match match)
Public Function MatchEvaluatorMethod(match As Match) As String

カスタムメソッドは、一致した入力を置き換える文字列を返します。Your custom method returns a string that replaces the matched input.

パラメーターにをRightToLeft指定した場合、一致の検索は入力文字列の末尾から開始され、左に移動します。それ以外の場合は、入力文字列の先頭から検索が開始され、右に移動します。 optionsIf you specify RightToLeft for the options parameter, the search for matches begins at the end of the input string and moves left; otherwise, the search begins at the start of the input string and moves right.

このRegexMatchTimeoutException例外は、置換操作の実行時間が、メソッドが呼び出されたアプリケーションドメインに指定されたタイムアウト期間を超えた場合にスローされます。The RegexMatchTimeoutException exception is thrown if the execution time of the replacement operation exceeds the time-out interval specified for the application domain in which the method is called. アプリケーションドメインのプロパティでタイムアウトが定義されていない場合、またはタイムアウト値がRegex.InfiniteMatchTimeoutの場合は、例外はスローされません。If no time-out is defined in the application domain's properties, or if the time-out value is Regex.InfiniteMatchTimeout, no exception is thrown.

一致するものがinputない場合、メソッドは変更なしで返されるためObject.ReferenceEquals 、メソッドを使用して、メソッドが入力文字列に置換を行ったかどうかを判断できます。Because the method returns input unchanged if there is no match, you can use the Object.ReferenceEquals method to determine whether the method has made any replacements to the input string.

こちらもご覧ください

Replace(String, String, Int32, Int32)

指定した入力部分文字列内で正規表現パターンに一致する文字列を、指定した最大回数だけ、指定した置換文字列に置換します。In a specified input substring, replaces a specified maximum number of strings that match a regular expression pattern with a specified replacement string.

public:
 System::String ^ Replace(System::String ^ input, System::String ^ replacement, int count, int startat);
public string Replace (string input, string replacement, int count, int startat);
member this.Replace : string * string * int * int -> string
Public Function Replace (input As String, replacement As String, count As Integer, startat As Integer) As String

パラメーター

input
String

一致する対象を検索する文字列。The string to search for a match.

replacement
String

置換文字列。The replacement string.

count
Int32

置換を実行する最大回数。Maximum number of times the replacement can occur.

startat
Int32

入力文字列中で検索を開始する文字位置。The character position in the input string where the search begins.

戻り値

一致する各文字列が置換文字列に置き換えられる以外は入力文字列と同じである新しい文字列。A new string that is identical to the input string, except that the replacement string takes the place of each matched string. 正規表現パターンが現在のインスタンスで一致しない場合、このメソッドは現在のインスタンスをそのまま返します。If the regular expression pattern is not matched in the current instance, the method returns the current instance unchanged.

例外

input または replacementnull です。input or replacement is null.

startat が 0 未満か、input の長さを超えています。startat is less than zero or greater than the length of input.

タイムアウトが発生しました。A time-out occurred. タイムアウトの詳細については、「解説」をご覧ください。For more information about time-outs, see the Remarks section.

次の例では、文字列の最初の行を除いて、すべてをダブルスペースにします。The following example double-spaces all but the first line of a string. これは、テキスト行と一致^.*$する正規表現パターンを定義し、 Match.Index文字列のMatch(String)最初の行と一致するようにメソッドを呼び出し、プロパティとMatch.Countプロパティを使用して2番目の開始位置を決定します。直線.It defines a regular expression pattern, ^.*$, that matches a line of text, calls the Match(String) method to match the first line of the string, and uses the Match.Index and Match.Count properties to determine the starting position of the second line.

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string input = "Instantiating a New Type\n" +
                     "Generally, there are two ways that an\n" + 
                     "instance of a class or structure can\n" +
                     "be instantiated. ";
      string pattern = "^.*$";
      string replacement = "\n$&";
      Regex rgx = new Regex(pattern, RegexOptions.Multiline);
      string result = String.Empty; 
      
      Match match = rgx.Match(input);
      // Double space all but the first line.
      if (match.Success) 
         result = rgx.Replace(input, replacement, -1, match.Index + match.Length + 1);

      Console.WriteLine(result);                     
   }
}
// The example displays the following output:
//       Instantiating a New Type
//       
//       Generally, there are two ways that an
//       
//       instance of a class or structure can
//       
//       be instntiated.
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim input As String = "Instantiating a New Type" + vbCrLf + _
                            "Generally, there are two ways that an" + vbCrLf + _
                            "instance of a class or structure can" + vbCrLf + _
                            "be instantiated. "
      Dim pattern As String = "^.*$"
      Dim replacement As String = vbCrLf + "$&"
      Dim rgx As New Regex(pattern, RegexOptions.Multiline)
      Dim result As String = String.Empty 
      
      Dim match As Match = rgx.Match(input)
      ' Double space all but the first line.
      If match.Success Then 
         result = rgx.Replace(input, replacement, -1, match.Index + match.Length + 1)
      End If
      Console.WriteLine(result)                      
   End Sub
End Module
' The example displays the following output:
'       Instantiating a New Type
'       
'       Generally, there are two ways that an
'       
'       instance of a class or structure can
'       
'       be instntiated.

正規表現パターン ^.*$ は、次の表に示すように定義されています。The regular expression pattern ^.*$ is defined as shown in the following table.

パターンPattern 説明Description
^ 行の先頭に一致します。Match the start of a line. (オブジェクトはRegex RegexOptions.Multilineオプションを使用してインスタンス化されていることに注意してください。それ以外の場合、この文字クラスは入力文字列の先頭にのみ一致します)。(Note that the Regex object was instantiated by using the RegexOptions.Multiline option; otherwise, this character class would only match the beginning of the input string.)
.* 任意の文字に0回以上一致します。Match any character zero or more times.
$ 行の末尾と一致します。Match the end of a line. (オブジェクトはRegex RegexOptions.Multilineオプションを使用してインスタンス化されていることに注意してください。それ以外の場合、この文字クラスは入力文字列の先頭にのみ一致します)。(Note that the Regex object was instantiated by using the RegexOptions.Multiline option; otherwise, this character class would only match the beginning of the input string.)

置換文字列 (vbCrLf + "$&" "\n$&" Visual Basic ではC#) は、一致する文字列の前に新しい行を追加します。The replacement string (vbCrLf + "$&" in Visual Basic, "\n$&" in C#) adds a new line before the matched string. この例\nのはC# 、 C#コンパイラによって改行文字として解釈されることに注意してください。これは正規表現文字エスケープを表しません。Note that \n in the C# example is interpreted as the newline character by the C# compiler; it does not represent a regular expression character escape.

注釈

一致の検索は、 input startatパラメーターで指定された位置にある文字列から開始されます。The search for matches starts in the input string at the position specified by the startat parameter. 正規表現は、現在Regexのオブジェクトのコンストラクターによって定義されたパターンです。The regular expression is the pattern defined by the constructor for the current Regex object. count負の値の場合、置換は文字列の末尾に続きます。If count is negative, replacements continue to the end of the string. count一致の数を超えた場合は、すべての一致が置換されます。If count exceeds the number of matches, all matches are replaced.

パラメーターでは、内のinput各一致文字列を置き換える文字列を指定します。 replacementThe replacement parameter specifies the string that is to replace each match in input. replacementは、リテラルテキストと置換の任意の組み合わせで構成できます。replacement can consist of any combination of literal text and substitutions. たとえば、置換パターンa*${test}bでは、文字列 "a *" の後に、 testキャプチャグループに一致する部分文字列 (存在する場合) と、その後に続く文字列 "b" が挿入されます。For example, the replacement pattern a*${test}b inserts the string "a*" followed by the substring that is matched by the test capturing group, if any, followed by the string "b". * 文字は、置換パターン内では、メタ文字として認識されません。The * character is not recognized as a metacharacter within a replacement pattern.

注意

置換は、置換パターンで認識される唯一の正規表現言語要素です。Substitutions are the only regular expression language elements that are recognized in a replacement pattern. 他のすべての正規表現言語要素 (文字エスケープを含む) は、正規表現パターンでのみ許可され、置換パターンでは認識されません。All other regular expression language elements, including character escapes, are allowed in regular expression patterns only and are not recognized in replacement patterns.

この例外は、置換操作の実行時間が、 Regex.Regex(String, RegexOptions, TimeSpan)コンストラクターで指定されたタイムアウト時間を超えた場合にスローされます。 RegexMatchTimeoutExceptionThe RegexMatchTimeoutException exception is thrown if the execution time of the replacement operation exceeds the time-out interval specified by the Regex.Regex(String, RegexOptions, TimeSpan) constructor. コンストラクターを呼び出すときにタイムアウト間隔を設定しなかった場合は、 Regexオブジェクトが作成されたアプリケーションドメインに対して設定されたタイムアウト値を操作が超えた場合に、例外がスローされます。If you do not set a time-out interval when you call the constructor, the exception is thrown if the operation exceeds any time-out value established for the application domain in which the Regex object is created. Regexコンストラクター呼び出しまたはアプリケーションドメインのプロパティでタイムアウトが定義されていない場合、またはタイムアウト値がRegex.InfiniteMatchTimeoutの場合、例外はスローされません。If no time-out is defined in the Regex constructor call or in the application domain's properties, or if the time-out value is Regex.InfiniteMatchTimeout, no exception is thrown

一致するものがinputない場合、メソッドは変更なしで返されるためObject.ReferenceEquals 、メソッドを使用して、メソッドが入力文字列に置換を行ったかどうかを判断できます。Because the method returns input unchanged if there is no match, you can use the Object.ReferenceEquals method to determine whether the method has made any replacements to the input string.

こちらもご覧ください

Replace(String, String, String, RegexOptions)

指定した入力文字列内で指定した正規表現に一致するすべての文字列を、指定した置換文字列に置換します。In a specified input string, replaces all strings that match a specified regular expression with a specified replacement string. 指定したオプションで、一致操作を変更します。Specified options modify the matching operation.

public:
 static System::String ^ Replace(System::String ^ input, System::String ^ pattern, System::String ^ replacement, System::Text::RegularExpressions::RegexOptions options);
public static string Replace (string input, string pattern, string replacement, System.Text.RegularExpressions.RegexOptions options);
static member Replace : string * string * string * System.Text.RegularExpressions.RegexOptions -> string
Public Shared Function Replace (input As String, pattern As String, replacement As String, options As RegexOptions) As String

パラメーター

input
String

一致する対象を検索する文字列。The string to search for a match.

pattern
String

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

replacement
String

置換文字列。The replacement string.

options
RegexOptions

一致オプションを指定する列挙値のビットごとの組み合わせ。A bitwise combination of the enumeration values that provide options for matching.

戻り値

一致する各文字列が置換文字列に置き換えられる以外は入力文字列と同じである新しい文字列。A new string that is identical to the input string, except that the replacement string takes the place of each matched string. pattern が現在のインスタンス内で一致しない場合、メソッドは現在のインスタンスを変更せずに返します。If pattern is not matched in the current instance, the method returns the current instance unchanged.

例外

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

inputpattern、または replacementnull です。input, pattern, or replacement is null.

options は、RegexOptions 値のビットごとの正しい組み合わせではありません。options is not a valid bitwise combination of RegexOptions values.

タイムアウトが発生しました。A time-out occurred. タイムアウトの詳細については、「解説」をご覧ください。For more information about time-outs, see the Remarks section.

次の例ではReplace(String, String, String, RegexOptions) 、メソッドを使用して、UNC パスのローカルコンピューターとドライブ名をローカルファイルパスに置き換えます。The following example uses the Replace(String, String, String, RegexOptions) method to replace the local machine and drive names in a UNC path with a local file path. この正規表現ではEnvironment.MachineName 、プロパティを使用してローカルコンピューターの名前を指定Environment.GetLogicalDrivesし、メソッドに論理ドライブの名前を含めます。The regular expression uses the Environment.MachineName property to include the name of the local computer, and the Environment.GetLogicalDrives method to include the names of the logical drives. すべての正規表現文字列比較では、大文字と小文字は区別されません。All regular expression string comparisons are case-insensitive. 例を正しく実行するには、リテラル文字列 "MyMachine" をローカルコンピューター名に置き換える必要があります。To run the example successfully, you should replace the literal string "MyMachine" with your local machine name.

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      // Get drives available on local computer and form into a single character expression.
      string[] drives = Environment.GetLogicalDrives();
      string driveNames = String.Empty;
      foreach (string drive in drives)
         driveNames += drive.Substring(0,1);
      // Create regular expression pattern dynamically based on local machine information.
      string pattern = @"\\\\" + Environment.MachineName + @"(?:\.\w+)*\\([" + driveNames + @"])\$";

      string replacement = "$1:";
      string[] uncPaths = { @"\\MyMachine.domain1.mycompany.com\C$\ThingsToDo.txt", 
                            @"\\MyMachine\c$\ThingsToDo.txt", 
                            @"\\MyMachine\d$\documents\mydocument.docx" }; 
      
      foreach (string uncPath in uncPaths)
      {
         Console.WriteLine("Input string: " + uncPath);
         Console.WriteLine("Returned string: " + Regex.Replace(uncPath, pattern, replacement, RegexOptions.IgnoreCase));
         Console.WriteLine();
      }
   }
}
// The example displays the following output if run on a machine whose name is
// MyMachine:
//    Input string: \\MyMachine.domain1.mycompany.com\C$\ThingsToTo.txt
//    Returned string: C:\ThingsToDo.txt
//    
//    Input string: \\MyMachine\c$\ThingsToDo.txt
//    Returned string: c:\ThingsToDo.txt
//    
//    Input string: \\MyMachine\d$\documents\mydocument.docx
//    Returned string: d:\documents\mydocument.docx
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      ' Get drives available on local computer and form into a single character expression.
      Dim drives() As String = Environment.GetLogicalDrives()
      Dim driveNames As String = Nothing
      For Each drive As String In drives
         driveNames += drive.Substring(0,1)
      Next
      ' Create regular expression pattern dynamically based on local machine information.
      Dim pattern As String = "\\\\" + Environment.MachineName + "(?:\.\w+)*\\([" + driveNames + "])\$"

      Dim replacement As String = "$1:"
      Dim uncPaths() AS String = {"\\MyMachine.domain1.mycompany.com\C$\ThingsToDo.txt", _
                                  "\\MyMachine\c$\ThingsToDo.txt", _
                                  "\\MyMachine\d$\documents\mydocument.docx" } 
      
      For Each uncPath As String In uncPaths
         Console.WriteLine("Input string: " + uncPath)
         Console.WriteLine("Returned string: " + Regex.Replace(uncPath, pattern, replacement, RegexOptions.IgnoreCase))
         Console.WriteLine()
      Next
   End Sub
End Module
' The example displays the following output if run on a machine whose name is
' MyMachine:
'    Input string: \\MyMachine.domain1.mycompany.com\C$\ThingsToTo.txt
'    Returned string: C:\ThingsToDo.txt
'    
'    Input string: \\MyMachine\c$\ThingsToDo.txt
'    Returned string: c:\ThingsToDo.txt
'    
'    Input string: \\MyMachine\d$\documents\mydocument.docx
'    Returned string: d:\documents\mydocument.docx

正規表現パターンは、次の式によって定義されます。The regular expression pattern is defined by the following expression:

"\\\\" + Environment.MachineName + "(?:\.\w+)*\\([" + driveNames + "])\$"

次の表に、正規表現パターンがどのように解釈されるかを示します。The following table shows how the regular expression pattern is interpreted.

パターンPattern 説明Description
\\\\ 2つの連続する\円記号 () 文字と一致します。\\\\ Match two consecutive backslash (\) characters. バックスラッシュ文字はエスケープ文字として解釈されるため、各円記号は別の円記号でエスケープする必要があります。Because the backslash character is interpreted as the escape character, each backslash must be escaped with another backslash.
+ Environment.MachineName + Environment.MachineNameプロパティによって返された文字列と一致します。Match the string that is returned by the Environment.MachineName property.
(?:\.\w+)* ピリオド (.) 文字の後に1個以上の単語文字が続くパターンに一致します。Match the period (.) character followed by one or more word characters. この一致は、0回以上発生する可能性があります。This match can occur zero or more times. 一致した部分式はキャプチャされません。The matched subexpression is not captured.
\\ 円記号 (\) 文字と一致します。\\ Match a backslash (\) character.
([" + driveNames + "]) 個々のドライブ文字で構成される文字クラスと一致します。Match the character class that consists of the individual drive letters. この一致は最初にキャプチャされた部分式です。This match is the first captured subexpression.
\$ リテラルドル記号 ($) 文字と一致します。Match the literal dollar sign ($) character.

置換パターン$1は、一致した文字列全体を最初にキャプチャされた部分式と置き換えます。The replacement pattern $1 replaces the entire match with the first captured subexpression. つまり、UNC コンピューターとドライブ名はドライブ文字で置き換えられます。That is, it replaces the UNC machine and drive name with the drive letter.

注釈

静的Replaceメソッドは、指定されたRegex正規表現パターンを使用してオブジェクトを構築し、 Replaceインスタンスメソッドを呼び出すことと同じです。The static Replace methods are equivalent to constructing a Regex object with the specified regular expression pattern and calling the instance method Replace.

パラメーター 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 .NET Framework Regular Expressions and Regular Expression Language - Quick Reference. パラメーターにをRightToLeft指定した場合、一致の検索は入力文字列の末尾から開始され、左に移動します。それ以外の場合は、入力文字列の先頭から検索が開始され、右に移動します。 optionsIf you specify RightToLeft for the options parameter, the search for matches begins at the end of the input string and moves left; otherwise, the search begins at the start of the input string and moves right.

パラメーターでは、内のinput各一致文字列を置き換える文字列を指定します。 replacementThe replacement parameter specifies the string that is to replace each match in input. replacementは、リテラルテキストと置換の任意の組み合わせで構成できます。replacement can consist of any combination of literal text and substitutions. たとえば、置換パターンa*${test}bでは、文字列 "a *" の後に、 testキャプチャグループに一致する部分文字列 (存在する場合) と、その後に続く文字列 "b" が挿入されます。For example, the replacement pattern a*${test}b inserts the string "a*" followed by the substring that is matched by the test capturing group, if any, followed by the string "b". * 文字は、置換パターン内では、メタ文字として認識されません。The * character is not recognized as a metacharacter within a replacement pattern.

注意

置換は、置換パターンで認識される唯一の正規表現言語要素です。Substitutions are the only regular expression language elements that are recognized in a replacement pattern. 他のすべての正規表現言語要素 (文字エスケープを含む) は、正規表現パターンでのみ許可され、置換パターンでは認識されません。All other regular expression language elements, including character escapes, are allowed in regular expression patterns only and are not recognized in replacement patterns.

このRegexMatchTimeoutException例外は、置換操作の実行時間が、メソッドが呼び出されたアプリケーションドメインに指定されたタイムアウト期間を超えた場合にスローされます。The RegexMatchTimeoutException exception is thrown if the execution time of the replacement operation exceeds the time-out interval specified for the application domain in which the method is called. アプリケーションドメインのプロパティでタイムアウトが定義されていない場合、またはタイムアウト値がRegex.InfiniteMatchTimeoutの場合は、例外はスローされません。If no time-out is defined in the application domain's properties, or if the time-out value is Regex.InfiniteMatchTimeout, no exception is thrown.

一致するものがinputない場合、メソッドは変更なしで返されるためObject.ReferenceEquals 、メソッドを使用して、メソッドが入力文字列に置換を行ったかどうかを判断できます。Because the method returns input unchanged if there is no match, you can use the Object.ReferenceEquals method to determine whether the method has made any replacements to the input string.

注意 (呼び出し元)

このメソッドは、呼び出されたアプリケーションドメインの既定のタイムアウト値と同じ間隔の後にタイムアウトします。This method times out after an interval that is equal to the default time-out value of the application domain in which it is called. タイムアウト値がアプリケーションドメインに対して定義されていない場合は、 InfiniteMatchTimeoutメソッドがタイムアウトしないようにする値が使用されます。If a time-out value has not been defined for the application domain, the value InfiniteMatchTimeout, which prevents the method from timing out, is used. パターンマッチを置き換えるために推奨される静的Replace(String, String, String, RegexOptions, TimeSpan)メソッドはです。これにより、タイムアウト間隔を設定できます。The recommended static method for replacing a pattern match is Replace(String, String, String, RegexOptions, TimeSpan), which lets you set the time-out interval.

こちらもご覧ください

Replace(String, String, MatchEvaluator)

指定した入力文字列内で、指定した正規表現に一致するすべての文字列を MatchEvaluator デリゲートによって返される文字列に置き換えます。In a specified input string, replaces all strings that match a specified regular expression with a string returned by a MatchEvaluator delegate.

public:
 static System::String ^ Replace(System::String ^ input, System::String ^ pattern, System::Text::RegularExpressions::MatchEvaluator ^ evaluator);
public static string Replace (string input, string pattern, System.Text.RegularExpressions.MatchEvaluator evaluator);
static member Replace : string * string * System.Text.RegularExpressions.MatchEvaluator -> string
Public Shared Function Replace (input As String, pattern As String, evaluator As MatchEvaluator) As String

パラメーター

input
String

一致する対象を検索する文字列。The string to search for a match.

pattern
String

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

evaluator
MatchEvaluator

各一致文字列を調べ、元の一致文字列または置換文字列のどちらかを返すカスタム メソッド。A custom method that examines each match and returns either the original matched string or a replacement string.

戻り値

一致する各文字列が置換文字列に置き換えられる以外は入力文字列と同じである新しい文字列。A new string that is identical to the input string, except that a replacement string takes the place of each matched string. pattern が現在のインスタンス内で一致しない場合、メソッドは現在のインスタンスを変更せずに返します。If pattern is not matched in the current instance, the method returns the current instance unchanged.

例外

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

inputpattern、または evaluatornull です。input, pattern, or evaluator is null.

タイムアウトが発生しました。A time-out occurred. タイムアウトの詳細については、「解説」をご覧ください。For more information about time-outs, see the Remarks section.

次の例では、正規表現を使用して文字列から個々の単語を抽出しMatchEvaluator 、デリゲートを使用してWordScramble 、単語内の個々の文字をスクランブルするという名前のメソッドを呼び出します。The following example uses a regular expression to extract the individual words from a string, and then uses a MatchEvaluator delegate to call a method named WordScramble that scrambles the individual letters in the word. これを行うためにWordScramble 、メソッドは、一致する文字を含む配列を作成します。To do this, the WordScramble method creates an array that contains the characters in the match. また、ランダムな浮動小数点数を設定する並列配列も作成します。It also creates a parallel array that it populates with random floating-point numbers. 配列は、 Array.Sort<TKey,TValue>(TKey[], TValue[], IComparer<TKey>)メソッドを呼び出すことによって並べ替えられ、並べ替えられた配列Stringはクラスコンストラクターへの引数として提供されます。The arrays are sorted by calling the Array.Sort<TKey,TValue>(TKey[], TValue[], IComparer<TKey>) method, and the sorted array is provided as an argument to a String class constructor. この新しく作成された文字列は、 WordScrambleメソッドによって返されます。This newly created string is then returned by the WordScramble method. 正規表現パターン\w+は、1個以上の単語文字と一致します。正規表現エンジンは、空白文字など、単語以外の文字が見つかるまで、一致に文字を追加し続けます。The regular expression pattern \w+ matches one or more word characters; the regular expression engine will continue to add characters to the match until it encounters a non-word character, such as a white-space character.

using System;
using System.Collections;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string words = "letter alphabetical missing lack release " + 
                     "penchant slack acryllic laundry cease";
      string pattern = @"\w+";                            
      MatchEvaluator evaluator = new MatchEvaluator(WordScrambler);
      Console.WriteLine("Original words:");
      Console.WriteLine(words);
      Console.WriteLine();
      Console.WriteLine("Scrambled words:");
      Console.WriteLine(Regex.Replace(words, pattern, evaluator));      
   }

   public static string WordScrambler(Match match)
   {
      int arraySize = match.Value.Length;
      // Define two arrays equal to the number of letters in the match.
      double[] keys = new double[arraySize];
      char[] letters = new char[arraySize];
      
      // Instantiate random number generator'
      Random rnd = new Random();
      
      for (int ctr = 0; ctr < match.Value.Length; ctr++)
      {
         // Populate the array of keys with random numbers.
         keys[ctr] = rnd.NextDouble();
         // Assign letter to array of letters.
         letters[ctr] = match.Value[ctr];
      }         
      Array.Sort(keys, letters, 0, arraySize, Comparer.Default);      
      return new String(letters);
   }
}
// The example displays output similar to the following:
//    Original words:
//    letter alphabetical missing lack release penchant slack acryllic laundry cease
//    
//    Scrambled words:
//    elrtte iaeabatlpchl igmnssi lcka aerslee hnpatnce ksacl lialcryc dylruna ecase
Imports System.Collections
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim words As String = "letter alphabetical missing lack release " + _
                            "penchant slack acryllic laundry cease"
      Dim pattern As String = "\w+"                            
      Dim evaluator As MatchEvaluator = AddressOf WordScrambler
      Console.WriteLine("Original words:")
      Console.WriteLine(words)
      Console.WriteLine("Scrambled words:")
      Console.WriteLine(Regex.Replace(words, pattern, evaluator))      
   End Sub
   
   Public Function WordScrambler(match As Match) As String
      Dim arraySize As Integer = match.Value.Length - 1
      ' Define two arrays equal to the number of letters in the match.
      Dim keys(arraySize) As Double
      Dim letters(arraySize) As Char
      
      ' Instantiate random number generator'
      Dim rnd As New Random()
      
      For ctr As Integer = 0 To match.Value.Length - 1
         ' Populate the array of keys with random numbers.
         keys(ctr) = rnd.NextDouble()
         ' Assign letter to array of letters.
         letters(ctr) = match.Value.Chars(ctr)
      Next         
      Array.Sort(keys, letters, 0, arraySize, Comparer.Default)      
      Return New String(letters)
   End Function
End Module
' The example displays output similar to the following:
'    Original words:
'    letter alphabetical missing lack release penchant slack acryllic laundry cease
'    
'    Scrambled words:
'    elrtte iaeabatlpchl igmnssi lcka aerslee hnpatnce ksacl lialcryc dylruna ecase

注釈

Regex.Replace(String, String, MatchEvaluator)メソッドは、次の条件のいずれかに該当する場合に正規表現の一致を置き換える場合に便利です。The Regex.Replace(String, String, MatchEvaluator) method is useful for replacing a regular expression match if any of the following conditions is true:

  • 置換文字列は、正規表現の置換パターンで簡単に指定することはできません。The replacement string cannot readily be specified by a regular expression replacement pattern.

  • 置換文字列は、一致した文字列に対して何らかの処理が行われた結果になります。The replacement string results from some processing done on the matched string.

  • 置換文字列は、条件付き処理の結果として返されます。The replacement string results from conditional processing.

メソッドは、 Regex.Matches(String, String)メソッドを呼び出し、返さMatchCollectionれたコレクションMatch内の各オブジェクトをevaluatorデリゲートに渡すことと同じです。The method is equivalent to calling the Regex.Matches(String, String) method and passing each Match object in the returned MatchCollection collection to the evaluator delegate.

パラメーター 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 .NET Framework Regular Expressions and Regular Expression Language - Quick Reference.

evaluatorパラメーターは、定義したカスタムメソッドのデリゲートであり、それぞれの一致を調べます。The evaluator parameter is the delegate for a custom method that you define and that examines each match. カスタムメソッドには、 MatchEvaluatorデリゲートに一致する次のシグネチャが必要です。The custom method must have the following signature to match the MatchEvaluator delegate.

public string MatchEvaluatorMethod(Match match)
Public Function MatchEvaluatorMethod(match As Match) As String

カスタムメソッドは、一致した入力を置き換える文字列を返します。Your custom method returns a string that replaces the matched input.

このRegexMatchTimeoutException例外は、置換操作の実行時間が、メソッドが呼び出されたアプリケーションドメインに指定されたタイムアウト期間を超えた場合にスローされます。The RegexMatchTimeoutException exception is thrown if the execution time of the replacement operation exceeds the time-out interval specified for the application domain in which the method is called. アプリケーションドメインのプロパティでタイムアウトが定義されていない場合、またはタイムアウト値がRegex.InfiniteMatchTimeoutの場合は、例外はスローされません。If no time-out is defined in the application domain's properties, or if the time-out value is Regex.InfiniteMatchTimeout, no exception is thrown.

一致するものがinputない場合、メソッドは変更なしで返されるためObject.ReferenceEquals 、メソッドを使用して、メソッドが入力文字列に置換を行ったかどうかを判断できます。Because the method returns input unchanged if there is no match, you can use the Object.ReferenceEquals method to determine whether the method has made any replacements to the input string.

注意 (呼び出し元)

このメソッドは、呼び出されたアプリケーションドメインの既定のタイムアウト値と同じ間隔の後にタイムアウトします。This method times out after an interval that is equal to the default time-out value of the application domain in which it is called. タイムアウト値がアプリケーションドメインに対して定義されていない場合は、 InfiniteMatchTimeoutメソッドがタイムアウトしないようにする値が使用されます。If a time-out value has not been defined for the application domain, the value InfiniteMatchTimeout, which prevents the method from timing out, is used. パターン一致を評価および置換するための推奨されるReplace(String, String, MatchEvaluator, RegexOptions, TimeSpan)静的メソッドはです。これにより、タイムアウト間隔を設定できます。The recommended static method for evaluating and replacing a pattern match is Replace(String, String, MatchEvaluator, RegexOptions, TimeSpan), which lets you set the time-out interval.

こちらもご覧ください

Replace(String, String, String)

指定した入力文字列内で指定した正規表現に一致するすべての文字列を、指定した置換文字列に置換します。In a specified input string, replaces all strings that match a specified regular expression with a specified replacement string.

public:
 static System::String ^ Replace(System::String ^ input, System::String ^ pattern, System::String ^ replacement);
public static string Replace (string input, string pattern, string replacement);
static member Replace : string * string * string -> string
Public Shared Function Replace (input As String, pattern As String, replacement As String) As String

パラメーター

input
String

一致する対象を検索する文字列。The string to search for a match.

pattern
String

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

replacement
String

置換文字列。The replacement string.

戻り値

一致する各文字列が置換文字列に置き換えられる以外は入力文字列と同じである新しい文字列。A new string that is identical to the input string, except that the replacement string takes the place of each matched string. pattern が現在のインスタンス内で一致しない場合、メソッドは現在のインスタンスを変更せずに返します。If pattern is not matched in the current instance, the method returns the current instance unchanged.

例外

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

inputpattern、または replacementnull です。input, pattern, or replacement is null.

タイムアウトが発生しました。A time-out occurred. タイムアウトの詳細については、「解説」をご覧ください。For more information about time-outs, see the Remarks section.

次の例では、1つ\s+以上の空白文字に一致する正規表現を定義しています。The following example defines a regular expression, \s+, that matches one or more white-space characters. 置換文字列 "" は、1つの空白文字で置き換えられます。The replacement string, " ", replaces them with a single space character.

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string input = "This is   text with   far  too   much   " + 
                     "white space.";
      string pattern = "\\s+";
      string replacement = " ";
      string result = Regex.Replace(input, pattern, replacement);
      
      Console.WriteLine("Original String: {0}", input);
      Console.WriteLine("Replacement String: {0}", result);                             
   }
}
// The example displays the following output:
//       Original String: This is   text with   far  too   much   white space.
//       Replacement String: This is text with far too much white space.
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim input As String = "This is   text with   far  too   much   " + _
                            "white space."
      Dim pattern As String = "\s+"
      Dim replacement As String = " "
      Dim result As String = Regex.Replace(input, pattern, replacement)
      
      Console.WriteLine("Original String: {0}", input)
      Console.WriteLine("Replacement String: {0}", result)                             
   End Sub
End Module
' The example displays the following output:
'          Original String: This is   text with   far  too   much   white space.
'          Replacement String: This is text with far too much white space.

次の例ではReplace(String, String, String) 、メソッドを使用して、UNC パスのローカルコンピューターとドライブ名をローカルファイルパスに置き換えます。The following example uses the Replace(String, String, String) method to replace the local machine and drive names in a UNC path with a local file path. この正規表現ではEnvironment.MachineName 、プロパティを使用してローカルコンピューターの名前を指定Environment.GetLogicalDrivesし、メソッドに論理ドライブの名前を含めます。The regular expression uses the Environment.MachineName property to include the name of the local computer, and the Environment.GetLogicalDrives method to include the names of the logical drives. 例を正しく実行するには、リテラル文字列 "MyMachine" をローカルコンピューター名に置き換える必要があります。To run the example successfully, you should replace the literal string "MyMachine" with your local machine name.

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      // Get drives available on local computer and form into a single character expression.
      string[] drives = Environment.GetLogicalDrives();
      string driveNames = String.Empty;
      foreach (string drive in drives)
         driveNames += drive.Substring(0,1);
      // Create regular expression pattern dynamically based on local machine information.
      string pattern = @"\\\\(?i:" + Environment.MachineName + @")(?:\.\w+)*\\((?i:[" + driveNames + @"]))\$";

      string replacement = "$1:";
      string[] uncPaths = { @"\\MyMachine.domain1.mycompany.com\C$\ThingsToDo.txt", 
                            @"\\MyMachine\c$\ThingsToDo.txt", 
                            @"\\MyMachine\d$\documents\mydocument.docx" }; 
      
      foreach (string uncPath in uncPaths)
      {
         Console.WriteLine("Input string: " + uncPath);
         Console.WriteLine("Returned string: " + Regex.Replace(uncPath, pattern, replacement));
         Console.WriteLine();
      }
   }
}
// The example displays the following output if run on a machine whose name is
// MyMachine:
//    Input string: \\MyMachine.domain1.mycompany.com\C$\ThingsToTo.txt
//    Returned string: C:\ThingsToDo.txt
//    
//    Input string: \\MyMachine\c$\ThingsToDo.txt
//    Returned string: c:\ThingsToDo.txt
//    
//    Input string: \\MyMachine\d$\documents\mydocument.docx
//    Returned string: d:\documents\mydocument.docx
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      ' Get drives available on local computer and form into a single character expression.
      Dim drives() As String = Environment.GetLogicalDrives()
      Dim driveNames As String = Nothing
      For Each drive As String In drives
         driveNames += drive.Substring(0,1)
      Next
      ' Create regular expression pattern dynamically based on local machine information.
      Dim pattern As String = "\\\\(?i:" + Environment.MachineName + ")(?:\.\w+)*\\((?i:[" + driveNames + "]))\$"

      Dim replacement As String = "$1:"
      Dim uncPaths() AS String = {"\\MyMachine.domain1.mycompany.com\C$\ThingsToDo.txt", _
                                  "\\MyMachine\c$\ThingsToDo.txt", _
                                  "\\MyMachine\d$\documents\mydocument.docx" } 
      
      For Each uncPath As String In uncPaths
         Console.WriteLine("Input string: " + uncPath)
         Console.WriteLine("Returned string: " + Regex.Replace(uncPath, pattern, replacement))
         Console.WriteLine()
      Next
   End Sub
End Module
' The example displays the following output if run on a machine whose name is
' MyMachine:
'    Input string: \\MyMachine.domain1.mycompany.com\C$\ThingsToTo.txt
'    Returned string: C:\ThingsToDo.txt
'    
'    Input string: \\MyMachine\c$\ThingsToDo.txt
'    Returned string: c:\ThingsToDo.txt
'    
'    Input string: \\MyMachine\d$\documents\mydocument.docx
'    Returned string: d:\documents\mydocument.docx

正規表現パターンは、次の式によって定義されます。The regular expression pattern is defined by the following expression:

"\\\\(?i:" + Environment.MachineName + ")(?:\.\w+)*\\((?i:[" + driveNames + "]))\$"

次の表に、正規表現パターンがどのように解釈されるかを示します。The following table shows how the regular expression pattern is interpreted.

パターンPattern 説明Description
\\\\ 2つの連続する\円記号 () 文字と一致します。\\\\ Match two consecutive backslash (\) characters. バックスラッシュ文字はエスケープ文字として解釈されるため、各円記号は別の円記号でエスケープする必要があります。Because the backslash character is interpreted as the escape character, each backslash must be escaped with another backslash.
(?i:" + Environment.MachineName + ") Environment.MachineNameプロパティによって返される文字列の大文字と小文字を区別しない一致を実行します。Perform a case-insensitive match of the string that is returned by the Environment.MachineName property.
(?:\.\w+)* ピリオド (.) 文字の後に1個以上の単語文字が続くパターンに一致します。Match the period (.) character followed by one or more word characters. この一致は、0回以上発生する可能性があります。This match can occur zero or more times. 一致した部分式はキャプチャされません。The matched subexpression is not captured.
\\ 円記号 (\) 文字と一致します。\\ Match a backslash (\) character.
((?i:[" + driveNames + "])) 個々のドライブ文字で構成される文字クラスの大文字と小文字を区別しない一致を実行します。Perform a case-insensitive match of the character class that consists of the individual drive letters. この一致は最初にキャプチャされた部分式です。This match is the first captured subexpression.
\$ リテラルドル記号 ($) 文字と一致します。Match the literal dollar sign ($) character.

置換パターン$1は、一致した文字列全体を最初にキャプチャされた部分式と置き換えます。The replacement pattern $1 replaces the entire match with the first captured subexpression. つまり、UNC コンピューターとドライブ名はドライブ文字で置き換えられます。That is, it replaces the UNC machine and drive name with the drive letter.

注釈

静的Replaceメソッドは、指定されたRegex正規表現パターンを使用してオブジェクトを構築し、 Replaceインスタンスメソッドを呼び出すことと同じです。The static Replace methods are equivalent to constructing a Regex object with the specified regular expression pattern and calling the instance method Replace.

パラメーター 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 .NET Framework Regular Expressions and Regular Expression Language - Quick Reference. 一致の検索は、 input文字列の先頭から開始されます。The search for matches starts at the beginning of the input string.

パラメーターでは、内のinput各一致文字列を置き換える文字列を指定します。 replacementThe replacement parameter specifies the string that is to replace each match in input. replacementは、リテラルテキストと置換の任意の組み合わせで構成できます。replacement can consist of any combination of literal text and substitutions. たとえば、置換パターンa*${test}bでは、文字列 "a *" の後に、 testキャプチャグループに一致する部分文字列 (存在する場合) と、その後に続く文字列 "b" が挿入されます。For example, the replacement pattern a*${test}b inserts the string "a*" followed by the substring that is matched by the test capturing group, if any, followed by the string "b". * 文字は、置換パターン内では、メタ文字として認識されません。The * character is not recognized as a metacharacter within a replacement pattern.

注意

置換は、置換パターンで認識される唯一の正規表現言語要素です。Substitutions are the only regular expression language elements that are recognized in a replacement pattern. 他のすべての正規表現言語要素 (文字エスケープを含む) は、正規表現パターンでのみ許可され、置換パターンでは認識されません。All other regular expression language elements, including character escapes, are allowed in regular expression patterns only and are not recognized in replacement patterns.

このRegexMatchTimeoutException例外は、置換操作の実行時間が、メソッドが呼び出されたアプリケーションドメインに指定されたタイムアウト期間を超えた場合にスローされます。The RegexMatchTimeoutException exception is thrown if the execution time of the replacement operation exceeds the time-out interval specified for the application domain in which the method is called. アプリケーションドメインのプロパティでタイムアウトが定義されていない場合、またはタイムアウト値がRegex.InfiniteMatchTimeoutの場合は、例外はスローされません。If no time-out is defined in the application domain's properties, or if the time-out value is Regex.InfiniteMatchTimeout, no exception is thrown.

一致するものがinputない場合、メソッドは変更なしで返されるためObject.ReferenceEquals 、メソッドを使用して、メソッドが入力文字列に置換を行ったかどうかを判断できます。Because the method returns input unchanged if there is no match, you can use the Object.ReferenceEquals method to determine whether the method has made any replacements to the input string.

注意 (呼び出し元)

このメソッドは、呼び出されたアプリケーションドメインの既定のタイムアウト値と同じ間隔の後にタイムアウトします。This method times out after an interval that is equal to the default time-out value of the application domain in which it is called. タイムアウト値がアプリケーションドメインに対して定義されていない場合は、 InfiniteMatchTimeoutメソッドがタイムアウトしないようにする値が使用されます。If a time-out value has not been defined for the application domain, the value InfiniteMatchTimeout, which prevents the method from timing out, is used. パターンマッチを置き換えるために推奨される静的Replace(String, String, String, RegexOptions, TimeSpan)メソッドはです。これにより、タイムアウト間隔を設定できます。The recommended static method for replacing a pattern match is Replace(String, String, String, RegexOptions, TimeSpan), which lets you set the time-out interval.

こちらもご覧ください

Replace(String, String, Int32)

指定した入力文字列内で正規表現パターンに一致する文字列を、指定した最大回数だけ、指定した置換文字列に置換します。In a specified input string, replaces a specified maximum number of strings that match a regular expression pattern with a specified replacement string.

public:
 System::String ^ Replace(System::String ^ input, System::String ^ replacement, int count);
public string Replace (string input, string replacement, int count);
member this.Replace : string * string * int -> string
Public Function Replace (input As String, replacement As String, count As Integer) As String

パラメーター

input
String

一致する対象を検索する文字列。The string to search for a match.

replacement
String

置換文字列。The replacement string.

count
Int32

置換を行う最大回数。The maximum number of times the replacement can occur.

戻り値

一致する各文字列が置換文字列に置き換えられる以外は入力文字列と同じである新しい文字列。A new string that is identical to the input string, except that the replacement string takes the place of each matched string. 正規表現パターンが現在のインスタンスで一致しない場合、このメソッドは現在のインスタンスをそのまま返します。If the regular expression pattern is not matched in the current instance, the method returns the current instance unchanged.

例外

input または replacementnull です。input or replacement is null.

タイムアウトが発生しました。A time-out occurred. タイムアウトの詳細については、「解説」をご覧ください。For more information about time-outs, see the Remarks section.

次の例では、最初の5回の重複する文字を1つの文字に置き換えます。The following example replaces the first five occurrences of duplicated characters with a single character. 正規表現パターン(\w)\1は、1つの文字を連続して検索し、最初の出現箇所を最初のキャプチャグループに代入します。The regular expression pattern (\w)\1 matches consecutive occurrences of a single character and assigns the first occurrence to the first capturing group. 置換パターン$1は、一致した文字列全体を最初のキャプチャグループに置き換えます。The replacement pattern $1 replaces the entire match with the first captured group.

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string str = "aabccdeefgghiijkklmm";
      string pattern = "(\\w)\\1"; 
      string replacement = "$1"; 
      Regex rgx = new Regex(pattern);

      string result = rgx.Replace(str, replacement, 5);
      Console.WriteLine("Original String:    '{0}'", str);
      Console.WriteLine("Replacement String: '{0}'", result); 
   }
}
// The example displays the following output:
//       Original String:    'aabccdeefgghiijkklmm'
//       Replacement String: 'abcdefghijkklmm'
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim str As String = "aabccdeefgghiijkklmm"
      Dim pattern As String = "(\w)\1" 
      Dim replacement As String = "$1" 
      Dim rgx As New Regex(pattern)

      Dim result As String = rgx.Replace(str, replacement, 5)
      Console.WriteLine("Original String:    '{0}'", str)
      Console.WriteLine("Replacement String: '{0}'", result)                             
   End Sub
End Module
' The example displays the following output:
'       Original String:    'aabccdeefgghiijkklmm'
'       Replacement String: 'abcdefghijkklmm'

注釈

一致の検索は、 input文字列の先頭から開始されます。The search for matches starts at the beginning of the input string. 正規表現は、現在Regexのオブジェクトのコンストラクターによって定義されるパターンです。The regular expression is the pattern that is defined by the constructor for the current Regex object. count負の値の場合、置換は文字列の末尾に続きます。If count is negative, replacements continue to the end of the string. count一致の数を超えた場合は、すべての一致が置換されます。If count exceeds the number of matches, all matches are replaced.

パラメーター replacementは、 countinput最初の一致を置き換える文字列を指定します。The replacement parameter specifies the string that is to replace the first count matches in input. replacementは、リテラルテキストと置換の任意の組み合わせで構成できます。replacement can consist of any combination of literal text and substitutions. たとえば、置換パターンa*${test}bでは、文字列 "a *" の後に、 testキャプチャグループに一致する部分文字列 (存在する場合) と、その後に続く文字列 "b" が挿入されます。For example, the replacement pattern a*${test}b inserts the string "a*" followed by the substring that is matched by the test capturing group, if any, followed by the string "b". * 文字は、置換パターン内では、メタ文字として認識されません。The * character is not recognized as a metacharacter within a replacement pattern.

注意

置換は、置換パターンで認識される唯一の正規表現言語要素です。Substitutions are the only regular expression language elements that are recognized in a replacement pattern. 他のすべての正規表現言語要素 (文字エスケープを含む) は、正規表現パターンでのみ許可され、置換パターンでは認識されません。All other regular expression language elements, including character escapes, are allowed in regular expression patterns only and are not recognized in replacement patterns.

この例外は、置換操作の実行時間が、 Regex.Regex(String, RegexOptions, TimeSpan)コンストラクターで指定されたタイムアウト時間を超えた場合にスローされます。 RegexMatchTimeoutExceptionThe RegexMatchTimeoutException exception is thrown if the execution time of the replacement operation exceeds the time-out interval specified by the Regex.Regex(String, RegexOptions, TimeSpan) constructor. コンストラクターを呼び出すときにタイムアウト間隔を設定しなかった場合は、 Regexオブジェクトが作成されたアプリケーションドメインに対して設定されたタイムアウト値を操作が超えた場合に、例外がスローされます。If you do not set a time-out interval when you call the constructor, the exception is thrown if the operation exceeds any time-out value established for the application domain in which the Regex object is created. Regexコンストラクター呼び出しまたはアプリケーションドメインのプロパティでタイムアウトが定義されていない場合、またはタイムアウト値がRegex.InfiniteMatchTimeoutの場合、例外はスローされません。If no time-out is defined in the Regex constructor call or in the application domain's properties, or if the time-out value is Regex.InfiniteMatchTimeout, no exception is thrown

一致するものがinputない場合、メソッドは変更なしで返されるためObject.ReferenceEquals 、メソッドを使用して、メソッドが入力文字列に置換を行ったかどうかを判断できます。Because the method returns input unchanged if there is no match, you can use the Object.ReferenceEquals method to determine whether the method has made any replacements to the input string.

こちらもご覧ください

Replace(String, MatchEvaluator)

指定した入力文字列内で、指定した正規表現に一致するすべての文字列を MatchEvaluator デリゲートによって返される文字列に置き換えます。In a specified input string, replaces all strings that match a specified regular expression with a string returned by a MatchEvaluator delegate.

public:
 System::String ^ Replace(System::String ^ input, System::Text::RegularExpressions::MatchEvaluator ^ evaluator);
public string Replace (string input, System.Text.RegularExpressions.MatchEvaluator evaluator);
member this.Replace : string * System.Text.RegularExpressions.MatchEvaluator -> string
Public Function Replace (input As String, evaluator As MatchEvaluator) As String

パラメーター

input
String

一致する対象を検索する文字列。The string to search for a match.

evaluator
MatchEvaluator

各一致文字列を調べ、元の一致文字列または置換文字列のどちらかを返すカスタム メソッド。A custom method that examines each match and returns either the original matched string or a replacement string.

戻り値

一致する各文字列が置換文字列に置き換えられる以外は入力文字列と同じである新しい文字列。A new string that is identical to the input string, except that a replacement string takes the place of each matched string. 正規表現パターンが現在のインスタンスで一致しない場合、このメソッドは現在のインスタンスをそのまま返します。If the regular expression pattern is not matched in the current instance, the method returns the current instance unchanged.

例外

input または evaluatornull です。input or evaluator is null.

タイムアウトが発生しました。A time-out occurred. タイムアウトの詳細については、「解説」をご覧ください。For more information about time-outs, see the Remarks section.

次のコード例では、元の文字列を表示し、元の文字列の各単語と一致し、各一致の最初の文字を大文字に変換して、変換後の文字列を表示します。The following code example displays an original string, matches each word in the original string, converts the first character of each match to uppercase, then displays the converted string.

using System;
using System.Text.RegularExpressions;

class RegExSample
{
    static string CapText(Match m)
    {
        // Get the matched string.
        string x = m.ToString();
        // If the first char is lower case...
        if (char.IsLower(x[0]))
        {
            // Capitalize it.
            return char.ToUpper(x[0]) + x.Substring(1, x.Length - 1);
        }
        return x;
    }

    static void Main()
    {
        string text = "four score and seven years ago";

        Console.WriteLine($"text=[{text}]");

        Regex rx = new Regex(@"\w+");

        string result = rx.Replace(text, new MatchEvaluator(RegExSample.CapText));

        Console.WriteLine($"result=[{result}]");
    }
}
// The example displays the following output:
//       text=[four score and seven years ago]
//       result=[Four Score And Seven Years Ago]
Imports System.Text.RegularExpressions

Module RegExSample
    Function CapText(ByVal m As Match) As String
        ' Get the matched string.
        Dim x As String = m.ToString()
        ' If the first char is lower case...
        If Char.IsLower(x.Chars(0)) Then
            ' Capitalize it.
            Return Char.ToUpper(x.Chars(0)) & x.Substring(1, x.Length - 1)
        End If
        Return x
    End Function

    Sub Main()
        Dim text As String = "four score and seven years ago"

        Console.WriteLine($"text=[{text}]")

        Dim rx As New Regex("\w+")

        Dim result As String = rx.Replace(text, AddressOf RegExSample.CapText)

        Console.WriteLine($"result=[{result}]")
    End Sub
End Module
' The example displays the following output:
'       text=[four score and seven years ago]
'       result=[Four Score And Seven Years Ago]

注釈

Regex.Replace(String, MatchEvaluator)メソッドは、次の条件のいずれかに該当する場合に正規表現の一致を置き換える場合に便利です。The Regex.Replace(String, MatchEvaluator) method is useful for replacing a regular expression match if any of the following conditions is true:

  • 置換文字列は、正規表現の置換パターンで簡単に指定することはできません。The replacement string cannot readily be specified by a regular expression replacement pattern.

  • 置換文字列は、一致した文字列に対して何らかの処理が行われた結果になります。The replacement string results from some processing done on the matched string.

  • 置換文字列は、条件付き処理の結果として返されます。The replacement string results from conditional processing.

メソッドは、 Regex.Matches(String)メソッドを呼び出し、返さMatchCollectionれたコレクションMatch内の各オブジェクトをevaluatorデリゲートに渡すことと同じです。The method is equivalent to calling the Regex.Matches(String) method and passing each Match object in the returned MatchCollection collection to the evaluator delegate.

正規表現は、現在Regexのオブジェクトのコンストラクターによって定義されたパターンです。The regular expression is the pattern defined by the constructor for the current Regex object.

evaluatorパラメーターは、定義したカスタムメソッドのデリゲートであり、それぞれの一致を調べます。The evaluator parameter is the delegate for a custom method that you define and that examines each match. カスタムメソッドには、 MatchEvaluatorデリゲートに一致する次のシグネチャが必要です。The custom method must have the following signature to match the MatchEvaluator delegate.

public string MatchEvaluatorMethod(Match match)
Public Function MatchEvaluatorMethod(match As Match) As String

カスタムメソッドは、一致した入力を置き換える文字列を返します。Your custom method returns a string that replaces the matched input.

この例外は、置換操作の実行時間が、 Regex.Regex(String, RegexOptions, TimeSpan)コンストラクターで指定されたタイムアウト時間を超えた場合にスローされます。 RegexMatchTimeoutExceptionThe RegexMatchTimeoutException exception is thrown if the execution time of the replacement operation exceeds the time-out interval specified by the Regex.Regex(String, RegexOptions, TimeSpan) constructor. コンストラクターを呼び出すときにタイムアウト間隔を設定しなかった場合は、 Regexオブジェクトが作成されたアプリケーションドメインに対して設定されたタイムアウト値を操作が超えた場合に、例外がスローされます。If you do not set a time-out interval when you call the constructor, the exception is thrown if the operation exceeds any time-out value established for the application domain in which the Regex object is created. Regexコンストラクター呼び出しまたはアプリケーションドメインのプロパティでタイムアウトが定義されていない場合、またはタイムアウト値がRegex.InfiniteMatchTimeoutの場合、例外はスローされません。If no time-out is defined in the Regex constructor call or in the application domain's properties, or if the time-out value is Regex.InfiniteMatchTimeout, no exception is thrown

一致するものがinputない場合、メソッドは変更なしで返されるためObject.ReferenceEquals 、メソッドを使用して、メソッドが入力文字列に置換を行ったかどうかを判断できます。Because the method returns input unchanged if there is no match, you can use the Object.ReferenceEquals method to determine whether the method has made any replacements to the input string.

こちらもご覧ください

Replace(String, String)

指定した入力文字列内で正規表現パターンに一致するすべての文字列を、指定した置換文字列に置換します。In a specified input string, replaces all strings that match a regular expression pattern with a specified replacement string.

public:
 System::String ^ Replace(System::String ^ input, System::String ^ replacement);
public string Replace (string input, string replacement);
member this.Replace : string * string -> string
Public Function Replace (input As String, replacement As String) As String

パラメーター

input
String

一致する対象を検索する文字列。The string to search for a match.

replacement
String

置換文字列。The replacement string.

戻り値

一致する各文字列が置換文字列に置き換えられる以外は入力文字列と同じである新しい文字列。A new string that is identical to the input string, except that the replacement string takes the place of each matched string. 正規表現パターンが現在のインスタンスで一致しない場合、このメソッドは現在のインスタンスをそのまま返します。If the regular expression pattern is not matched in the current instance, the method returns the current instance unchanged.

例外

input または replacementnull です。input or replacement is null.

タイムアウトが発生しました。A time-out occurred. タイムアウトの詳細については、「解説」をご覧ください。For more information about time-outs, see the Remarks section.

次の例では、1つ\s+以上の空白文字に一致する正規表現を定義しています。The following example defines a regular expression, \s+, that matches one or more white-space characters. 置換文字列 "" は、1つの空白文字で置き換えられます。The replacement string, " ", replaces them with a single space character.

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string input = "This is   text with   far  too   much   " + 
                     "white space.";
      string pattern = "\\s+";
      string replacement = " ";
      Regex rgx = new Regex(pattern);
      string result = rgx.Replace(input, replacement);
      
      Console.WriteLine("Original String: {0}", input);
      Console.WriteLine("Replacement String: {0}", result);                             
   }
}
// The example displays the following output:
//       Original String: This is   text with   far  too   much   white space.
//       Replacement String: This is text with far too much white space.
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim input As String = "This is   text with   far  too   much   " + _
                            "white space."
      Dim pattern As String = "\s+"
      Dim replacement As String = " "
      Dim rgx As New Regex(pattern)
      Dim result As String = rgx.Replace(input, replacement)
      
      Console.WriteLine("Original String: {0}", input)
      Console.WriteLine("Replacement String: {0}", result)                             
   End Sub
End Module
' The example displays the following output:
'          Original String: This is   text with   far  too   much   white space.
'          Replacement String: This is text with far too much white space.

次の例では、正規表現(\p{Sc}\s?)?(\d+\.?((?<=\.)\d+)?)(?(1)|\s?\p{Sc})?と、数値から先頭また$2は末尾の通貨記号を削除する置換パターンを定義しています。The following example defines a regular expression, (\p{Sc}\s?)?(\d+\.?((?<=\.)\d+)?)(?(1)|\s?\p{Sc})?, and a replacement pattern, $2, that removes either a leading or a trailing currency symbol from a numeric value.

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string pattern =  @"(\p{Sc}\s?)?(\d+\.?((?<=\.)\d+)?)(?(1)|\s?\p{Sc})?";
      string input = "$17.43  €2 16.33  £0.98  0.43   £43   12€  17";
      string replacement = "$2";
      Regex rgx = new Regex(pattern);
      string result = rgx.Replace(input, replacement);

      Console.WriteLine("Original String:    '{0}'", input);
      Console.WriteLine("Replacement String: '{0}'", result);                             
   }
}
// The example displays the following output:
//       Original String:    '$17.43  €2 16.33  £0.98  0.43   £43   12€  17'
//       Replacement String: '17.43  2 16.33  0.98  0.43   43   12  17'
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim pattern As String =  "(\p{Sc}\s?)?(\d+\.?((?<=\.)\d+)?)(?(1)|\s?\p{Sc})?"
      Dim input As String = "$17.43  €2 16.33  £0.98  0.43   £43   12€  17"
      Dim replacement As String = "$2"
      Dim rgx As New Regex(pattern)
      Dim result As String = rgx.Replace(input, replacement)

      Console.WriteLine("Original String:    '{0}'", input)
      Console.WriteLine("Replacement String: '{0}'", result)                             
   End Sub
End Module
' The example displays the following output:
'       Original String:    '$17.43  €2 16.33  £0.98  0.43   £43   12€  17'
'       Replacement String: '17.43  2 16.33  0.98  0.43   43   12  17'

この正規表現の解釈を次の表に示します。The regular expression is interpreted as shown in the following table.

パターンPattern 説明Description
\p{Sc} 通貨記号に一致します。Match a currency symbol. {Sc}Unicode 記号、通貨カテゴリのメンバーである任意の文字を示します。{Sc} denotes any character that is a member of the Unicode Symbol, Currency category.
\s? 0 個または 1 個の空白文字と一致します。Match zero or one white-space character.
(\p{Sc}\s?)? 通貨記号の後に0個または1個の空白文字が続く組み合わせの0回または1回の繰り返しに一致します。Match zero or one occurrence of the combination of a currency symbol followed by zero or one white-space character. これが最初のキャプチャ グループです。This is the first capturing group.
\d+ 1 個以上の 10 進数と一致します。Match one or more decimal digits.
\.? ピリオドの0回または1回の繰り返しに一致します (小数点区切り文字として使用されます)。Match zero or one occurrence of a period (used as a decimal separator character).
((?<=\.)\d+)? ピリオドが前の文字の場合は、1桁以上の10進数と一致します。If a period is the previous character, match one or more decimal digits. このパターンは、0回または1回一致することができます。This pattern can be matched either zero or one time.
(\d+\.?((?<=\.)\d+)?) 1個以上の10進数の後に省略可能なピリオドと追加の10進数が続くパターンと一致します。Match the pattern of one or more decimal digits followed by an optional period and additional decimal digits. これが 2 番目のキャプチャ グループです。This is the second capturing group. Replace(String, String)メソッドを呼び出すと、一致した全体がこのキャプチャされたグループの値に置き換えられます。The call to the Replace(String, String) method replaces the entire match with the value of this captured group.
(?(1)|\s?\p{Sc})? 最初のキャプチャグループが存在する場合は、空の文字列と一致します。If the first captured group exists, match an empty string. それ以外の場合は、0個または1個の空白文字の後に通貨記号が続くパターンに一致します。Otherwise, match zero or one white-space character followed by a currency symbol.

注釈

一致の検索は、 input文字列の先頭から開始されます。The search for matches starts at the beginning of the input string. 正規表現は、現在Regexのオブジェクトのコンストラクターによって定義されたパターンです。The regular expression is the pattern defined by the constructor for the current Regex object.

パラメーターでは、内のinput各一致文字列を置き換える文字列を指定します。 replacementThe replacement parameter specifies the string that is to replace each match in input. replacementは、リテラルテキストと置換の任意の組み合わせで構成できます。replacement can consist of any combination of literal text and substitutions. たとえば、置換パターンa*${test}bでは、文字列 "a *" の後に、 testキャプチャグループに一致する部分文字列 (存在する場合) と、その後に続く文字列 "b" が挿入されます。For example, the replacement pattern a*${test}b inserts the string "a*" followed by the substring that is matched by the test capturing group, if any, followed by the string "b". * 文字は、置換パターン内では、メタ文字として認識されません。The * character is not recognized as a metacharacter within a replacement pattern.

注意

置換は、置換パターンで認識される唯一の正規表現言語要素です。Substitutions are the only regular expression language elements that are recognized in a replacement pattern. 他のすべての正規表現言語要素 (文字エスケープを含む) は、正規表現パターンでのみ許可され、置換パターンでは認識されません。All other regular expression language elements, including character escapes, are allowed in regular expression patterns only and are not recognized in replacement patterns.

この例外は、置換操作の実行時間が、 Regex.Regex(String, RegexOptions, TimeSpan)コンストラクターで指定されたタイムアウト時間を超えた場合にスローされます。 RegexMatchTimeoutExceptionThe RegexMatchTimeoutException exception is thrown if the execution time of the replacement operation exceeds the time-out interval specified by the Regex.Regex(String, RegexOptions, TimeSpan) constructor. コンストラクターを呼び出すときにタイムアウト間隔を設定しなかった場合は、 Regexオブジェクトが作成されたアプリケーションドメインに対して設定されたタイムアウト値を操作が超えた場合に、例外がスローされます。If you do not set a time-out interval when you call the constructor, the exception is thrown if the operation exceeds any time-out value established for the application domain in which the Regex object is created. Regexコンストラクター呼び出しまたはアプリケーションドメインのプロパティでタイムアウトが定義されていない場合、またはタイムアウト値がRegex.InfiniteMatchTimeoutの場合、例外はスローされません。If no time-out is defined in the Regex constructor call or in the application domain's properties, or if the time-out value is Regex.InfiniteMatchTimeout, no exception is thrown

一致するものがinputない場合、メソッドは変更なしで返されるためObject.ReferenceEquals 、メソッドを使用して、メソッドが入力文字列に置換を行ったかどうかを判断できます。Because the method returns input unchanged if there is no match, you can use the Object.ReferenceEquals method to determine whether the method has made any replacements to the input string.

こちらもご覧ください

Replace(String, MatchEvaluator, Int32)

指定した入力文字列内で正規表現パターンに一致する文字列を、指定した最大回数だけ、MatchEvaluator デリゲートによって返される文字列に置き換えます。In a specified input string, replaces a specified maximum number of strings that match a regular expression pattern with a string returned by a MatchEvaluator delegate.

public:
 System::String ^ Replace(System::String ^ input, System::Text::RegularExpressions::MatchEvaluator ^ evaluator, int count);
public string Replace (string input, System.Text.RegularExpressions.MatchEvaluator evaluator, int count);
member this.Replace : string * System.Text.RegularExpressions.MatchEvaluator * int -> string
Public Function Replace (input As String, evaluator As MatchEvaluator, count As Integer) As String

パラメーター

input
String

一致する対象を検索する文字列。The string to search for a match.

evaluator
MatchEvaluator

各一致文字列を調べ、元の一致文字列または置換文字列のどちらかを返すカスタム メソッド。A custom method that examines each match and returns either the original matched string or a replacement string.

count
Int32

置換を実行する最大回数。The maximum number of times the replacement will occur.

戻り値

一致する各文字列が置換文字列に置き換えられる以外は入力文字列と同じである新しい文字列。A new string that is identical to the input string, except that a replacement string takes the place of each matched string. 正規表現パターンが現在のインスタンスで一致しない場合、このメソッドは現在のインスタンスをそのまま返します。If the regular expression pattern is not matched in the current instance, the method returns the current instance unchanged.

例外

input または evaluatornull です。input or evaluator is null.

タイムアウトが発生しました。A time-out occurred. タイムアウトの詳細については、「解説」をご覧ください。For more information about time-outs, see the Remarks section.

次の例では、正規表現を使用して、リスト内の単語の半分を意図的に誤って間違えています。The following example uses a regular expression to deliberately misspell half of the words in a list. この例では、 \w*(ie|ei)\w*正規表現を使用して、"ie" または "ei" という文字を含む単語を照合します。It uses the regular expression \w*(ie|ei)\w* to match words that include the characters "ie" or "ei". 一致する単語の最初の半分をReverseLetterメソッドに渡します。さらに、 Replace(String, String, String, RegexOptions)メソッドを使用して、一致する文字列の "i" と "e" を逆にします。It passes the first half of the matching words to the ReverseLetter method, which, in turn, uses the Replace(String, String, String, RegexOptions) method to reverse "i" and "e" in the matched string. 残りの単語は変更されません。The remaining words remain unchanged.

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string input = "deceive relieve achieve belief fierce receive";
      string pattern = @"\w*(ie|ei)\w*";
      Regex rgx = new Regex(pattern, RegexOptions.IgnoreCase);
      Console.WriteLine("Original string: " + input);
      
      string result = rgx.Replace(input, new MatchEvaluator(Example.ReverseLetter), 
                                  input.Split(' ').Length / 2);
      Console.WriteLine("Returned string: " + result);
   }

   static string ReverseLetter(Match match)
   {
      return Regex.Replace(match.Value, "([ie])([ie])", "$2$1", 
                           RegexOptions.IgnoreCase);            
   }
}
// The example displays the following output:
//    Original string: deceive relieve achieve belief fierce receive
//    Returned string: decieve releive acheive belief fierce receive
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim input As String = "deceive relieve achieve belief fierce receive"
      Dim pattern As String = "\w*(ie|ei)\w*"
      Dim rgx As New Regex(pattern, RegexOptions.IgnoreCase)
      Console.WriteLine("Original string: " + input)
      
      Dim result As String = rgx.Replace(input, AddressOf ReverseLetter, 
                                           input.Split(" "c).Length \ 2)
      Console.WriteLine("Returned string: " + result)
   End Sub

   Public Function ReverseLetter(match As Match) As String
      Return Regex.Replace(match.Value, "([ie])([ie])", "$2$1", 
                           RegexOptions.IgnoreCase)            
   End Function
End Module
' The example displays the following output:
'    Original string: deceive relieve achieve belief fierce receive
'    Returned string: decieve releive acheive belief fierce receive

正規表現 \w*(ie|ei)\w* は、次の表に示すように定義されています。The regular expression \w*(ie|ei)\w* is defined as shown in the following table.

パターンPattern 説明Description
\w* 0 個以上の単語に使用される文字に一致します。Match zero or more word characters.
(ie|ei) "Ie" または "ei" に一致します。Match either "ie" or "ei".
\w* 0 個以上の単語に使用される文字に一致します。Match zero or more word characters.

メソッドの正規表現([ie])([ie])パターンは、diphthong "ie" または "ei" の最初の "i" または "e" と一致し、その文字を最初のキャプチャグループに代入します。 ReverseLetterThe regular expression pattern ([ie])([ie]) in the ReverseLetter method matches the first "i" or "e" in the diphthong "ie" or "ei" and assigns the letter to the first capturing group. 2番目の "i" または "e" と一致し、2番目のキャプチャグループに文字を割り当てます。It matches the second "i" or "e" and assigns the letter to the second capturing group. 2つの文字は、置換パターンReplace(String, String, String) $2$1を使用してメソッドを呼び出すことによって元に戻されます。The two characters are then reversed by calling the Replace(String, String, String) method with the replacement pattern $2$1.

注釈

Regex.Replace(String, MatchEvaluator, Int32)メソッドは、次の条件のいずれかに該当する場合に正規表現の一致を置き換える場合に便利です。The Regex.Replace(String, MatchEvaluator, Int32) method is useful for replacing a regular expression match if any of the following conditions is true:

  • 置換文字列は、正規表現の置換パターンで簡単に指定することはできません。The replacement string cannot readily be specified by a regular expression replacement pattern.

  • 置換文字列は、一致した文字列に対して何らかの処理が行われた結果になります。The replacement string results from some processing done on the matched string.

  • 置換文字列は、条件付き処理の結果として返されます。The replacement string results from conditional processing.

メソッドはRegex.Matches(String) 、メソッドを呼び出し、返されMatchCollectionたコレクション内countの最初Matchのオブジェクトをevaluatorデリゲートに渡すことと同じです。The method is equivalent to calling the Regex.Matches(String) method and passing the first countMatch objects in the returned MatchCollection collection to the evaluator delegate.

正規表現は、現在Regexのオブジェクトのコンストラクターによって定義されたパターンです。The regular expression is the pattern defined by the constructor for the current Regex object.

evaluatorパラメーターは、定義したカスタムメソッドのデリゲートであり、それぞれの一致を調べます。The evaluator parameter is the delegate for a custom method that you define and that examines each match. カスタムメソッドには、 MatchEvaluatorデリゲートに一致する次のシグネチャが必要です。The custom method must have the following signature to match the MatchEvaluator delegate.

public string MatchEvaluatorMethod(Match match)
Public Function MatchEvaluatorMethod(match As Match) As String

カスタムメソッドは、一致した入力を置き換える文字列を返します。Your custom method returns a string that replaces the matched input.

この例外は、置換操作の実行時間が、 Regex.Regex(String, RegexOptions, TimeSpan)コンストラクターで指定されたタイムアウト時間を超えた場合にスローされます。 RegexMatchTimeoutExceptionThe RegexMatchTimeoutException exception is thrown if the execution time of the replacement operation exceeds the time-out interval specified by the Regex.Regex(String, RegexOptions, TimeSpan) constructor. コンストラクターを呼び出すときにタイムアウト間隔を設定しなかった場合は、 Regexオブジェクトが作成されたアプリケーションドメインに対して設定されたタイムアウト値を操作が超えた場合に、例外がスローされます。If you do not set a time-out interval when you call the constructor, the exception is thrown if the operation exceeds any time-out value established for the application domain in which the Regex object is created. Regexコンストラクター呼び出しまたはアプリケーションドメインのプロパティでタイムアウトが定義されていない場合、またはタイムアウト値がRegex.InfiniteMatchTimeoutの場合、例外はスローされません。If no time-out is defined in the Regex constructor call or in the application domain's properties, or if the time-out value is Regex.InfiniteMatchTimeout, no exception is thrown

一致するものがinputない場合、メソッドは変更なしで返されるためObject.ReferenceEquals 、メソッドを使用して、メソッドが入力文字列に置換を行ったかどうかを判断できます。Because the method returns input unchanged if there is no match, you can use the Object.ReferenceEquals method to determine whether the method has made any replacements to the input string.

こちらもご覧ください

適用対象