Regex.Replace Regex.Replace Regex.Replace Regex.Replace Method

定義

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

オーバーロード

Replace(String, String, MatchEvaluator, RegexOptions, TimeSpan) Replace(String, String, MatchEvaluator, RegexOptions, TimeSpan) Replace(String, String, MatchEvaluator, RegexOptions, TimeSpan) 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) Replace(String, String, String, RegexOptions, TimeSpan) Replace(String, String, String, RegexOptions, TimeSpan) 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) Replace(String, MatchEvaluator, Int32, Int32) Replace(String, MatchEvaluator, Int32, Int32) 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) Replace(String, String, MatchEvaluator, RegexOptions) Replace(String, String, MatchEvaluator, RegexOptions) 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) Replace(String, String, Int32, Int32) Replace(String, String, Int32, Int32) 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) Replace(String, String, String, RegexOptions) Replace(String, String, String, RegexOptions) 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) Replace(String, String, MatchEvaluator) Replace(String, String, MatchEvaluator) 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) Replace(String, String, String) Replace(String, String, String) 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) Replace(String, String, Int32) Replace(String, String, Int32) 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) Replace(String, MatchEvaluator) Replace(String, MatchEvaluator) 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) Replace(String, String) Replace(String, String) 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) Replace(String, MatchEvaluator, Int32) Replace(String, MatchEvaluator, Int32) 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) Replace(String, String, MatchEvaluator, RegexOptions, TimeSpan) Replace(String, String, MatchEvaluator, RegexOptions, TimeSpan) 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 String String String

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

pattern
String String String String

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

evaluator
MatchEvaluator MatchEvaluator MatchEvaluator MatchEvaluator

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

options
RegexOptions RegexOptions RegexOptions RegexOptions

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

matchTimeout
TimeSpan TimeSpan TimeSpan 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)メソッドと各を渡すMatch、返されるオブジェクトMatchCollectionコレクションを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.

指定した場合RightToLeftoptionsパラメーター、一致の検索は、入力文字列の末尾から開始し、左に移動します。、検索がそれ以外の場合、入力文字列の先頭から開始し、右に移動します。If 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) Replace(String, String, String, RegexOptions, TimeSpan) Replace(String, String, String, RegexOptions, TimeSpan) 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 String String String

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

pattern
String String String String

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

replacement
String String String String

置換文字列。The replacement string.

options
RegexOptions RegexOptions RegexOptions RegexOptions

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

matchTimeout
TimeSpan TimeSpan TimeSpan 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. 円記号のエスケープ文字として解釈するため、各円記号をもう 1 つの円記号でエスケープする必要があります。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. 指定した場合RightToLeftoptionsパラメーター、一致の検索は、入力文字列の末尾から開始し、左に移動します。、検索がそれ以外の場合、入力文字列の先頭から開始し、右に移動します。If 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.

replacementパラメーターは、各一致文字列を置換する文字列を示すinputします。The 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文字列を挿入します"、*"と一致した部分文字列を続けて、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) Replace(String, MatchEvaluator, Int32, Int32) Replace(String, MatchEvaluator, Int32, Int32) 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 String String String

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

evaluator
MatchEvaluator MatchEvaluator MatchEvaluator MatchEvaluator

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

count
Int32 Int32 Int32 Int32

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

startat
Int32 Int32 Int32 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)メソッドと、最初に渡すcount Match 、返されるオブジェクトMatchCollectionコレクションを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.

RegexMatchTimeoutException置換操作の実行時間が指定されたタイムアウト間隔を超えた場合に例外がスローされます、Regex.Regex(String, RegexOptions, TimeSpan)コンス トラクター。The 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) Replace(String, String, MatchEvaluator, RegexOptions) Replace(String, String, MatchEvaluator, RegexOptions) 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 String String String

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

pattern
String String String String

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

evaluator
MatchEvaluator MatchEvaluator MatchEvaluator MatchEvaluator

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

options
RegexOptions RegexOptions RegexOptions 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)メソッドと各を渡すMatch、返されるオブジェクトMatchCollectionコレクションを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.

指定した場合RightToLeftoptionsパラメーター、一致の検索は、入力文字列の末尾から開始し、左に移動します。、検索がそれ以外の場合、入力文字列の先頭から開始し、右に移動します。If 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) Replace(String, String, Int32, Int32) Replace(String, String, Int32, Int32) 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 String String String

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

replacement
String String String String

置換文字列。The replacement string.

count
Int32 Int32 Int32 Int32

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

startat
Int32 Int32 Int32 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.

次の例の行間を除くすべての文字列の最初の行を 2 します。The following example double-spaces all but the first line of a string. 正規表現パターンでは、定義^.*$、テキスト、呼び出しの行に一致する、Match(String)メソッドを使用して、文字列の最初の行に一致するように、Match.IndexMatch.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 + "$&" Visual basic で"\n$&"(C#))、一致した文字列の前に新しい行を追加します。The replacement string (vbCrLf + "$&" in Visual Basic, "\n$&" in C#) adds a new line before the matched string. なお\nc# では、改行文字としての使用例を解釈 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.

replacementパラメーターは、各一致文字列を置換する文字列を示すinputします。The 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文字列を挿入します"、*"と一致した部分文字列を続けて、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置換操作の実行時間が指定されたタイムアウト間隔を超えた場合に例外がスローされます、Regex.Regex(String, RegexOptions, TimeSpan)コンス トラクター。The 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) Replace(String, String, String, RegexOptions) Replace(String, String, String, RegexOptions) 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 String String String

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

pattern
String String String String

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

replacement
String String String String

置換文字列。The replacement string.

options
RegexOptions RegexOptions RegexOptions 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. 円記号のエスケープ文字として解釈するため、各円記号をもう 1 つの円記号でエスケープする必要があります。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. 指定した場合RightToLeftoptionsパラメーター、一致の検索は、入力文字列の末尾から開始し、左に移動します。、検索がそれ以外の場合、入力文字列の先頭から開始し、右に移動します。If 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.

replacementパラメーターは、各一致文字列を置換する文字列を示すinputします。The 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文字列を挿入します"、*"と一致した部分文字列を続けて、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) Replace(String, String, MatchEvaluator) Replace(String, String, MatchEvaluator) 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 String String String

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

pattern
String String String String

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

evaluator
MatchEvaluator MatchEvaluator MatchEvaluator 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)メソッドと各を渡すMatch、返されるオブジェクトMatchCollectionコレクションを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) Replace(String, String, String) Replace(String, String, String) 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 String String String

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

pattern
String String String String

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

replacement
String String String 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.

次の例では、正規表現に\s+、1 つ以上の空白文字と一致します。The following example defines a regular expression, \s+, that matches one or more white-space characters. 置換後の文字列""、単一の空白文字に置き換えます。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. 円記号のエスケープ文字として解釈するため、各円記号をもう 1 つの円記号でエスケープする必要があります。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 lettters. 一致するものでは、最初にキャプチャされた部分式です。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.

replacementパラメーターは、各一致文字列を置換する文字列を示すinputします。The 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文字列を挿入します"、*"と一致した部分文字列を続けて、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) Replace(String, String, Int32) Replace(String, String, Int32) 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 String String String

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

replacement
String String String String

置換文字列。The replacement string.

count
Int32 Int32 Int32 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)\11 つの文字の連続した出現と一致し、最初のキャプチャ グループに最初に見つかった位置を割り当てます。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パラメーター最初を置換する文字列を指定countで一致するinputします。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文字列を挿入します"、*"と一致した部分文字列を続けて、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置換操作の実行時間が指定されたタイムアウト間隔を超えた場合に例外がスローされます、Regex.Regex(String, RegexOptions, TimeSpan)コンス トラクター。The 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) Replace(String, MatchEvaluator) Replace(String, MatchEvaluator) 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 String String String

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

evaluator
MatchEvaluator MatchEvaluator MatchEvaluator 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)メソッドと各を渡すMatch、返されるオブジェクトMatchCollectionコレクションを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.

RegexMatchTimeoutException置換操作の実行時間が指定されたタイムアウト間隔を超えた場合に例外がスローされます、Regex.Regex(String, RegexOptions, TimeSpan)コンス トラクター。The 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) Replace(String, String) Replace(String, 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 String String String

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

replacement
String String String 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.

次の例では、正規表現に\s+、1 つ以上の空白文字と一致します。The following example defines a regular expression, \s+, that matches one or more white-space characters. 置換後の文字列""、単一の空白文字に置き換えます。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 の Symbol, Currency カテゴリのメンバーである任意の文字を表します。{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.
\.? (10 進数の区切り文字として使用される) の期間の 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.

replacementパラメーターは、各一致文字列を置換する文字列を示すinputします。The 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文字列を挿入します"、*"と一致した部分文字列を続けて、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置換操作の実行時間が指定されたタイムアウト間隔を超えた場合に例外がスローされます、Regex.Regex(String, RegexOptions, TimeSpan)コンス トラクター。The 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) Replace(String, MatchEvaluator, Int32) Replace(String, MatchEvaluator, Int32) 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 String String String

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

evaluator
MatchEvaluator MatchEvaluator MatchEvaluator MatchEvaluator

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

count
Int32 Int32 Int32 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])で、ReverseLetterメソッドは"ie"または"ei"二重母音で最初の"i"または"e"に一致して、最初のキャプチャ グループに文字が割り当てられます。The 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)メソッドと、最初に渡すcount Match 、返されるオブジェクトMatchCollectionコレクションを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.

RegexMatchTimeoutException置換操作の実行時間が指定されたタイムアウト間隔を超えた場合に例外がスローされます、Regex.Regex(String, RegexOptions, TimeSpan)コンス トラクター。The 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.

こちらもご覧ください

適用対象