Regex.Split Regex.Split Regex.Split Regex.Split Method

Определение

Разделяет входную строку в массив подстрок в позициях, определенных соответствием регулярного выражения.Splits an input string into an array of substrings at the positions defined by a regular expression match.

Перегрузки

Split(String, String, RegexOptions, TimeSpan) Split(String, String, RegexOptions, TimeSpan) Split(String, String, RegexOptions, TimeSpan) Split(String, String, RegexOptions, TimeSpan)

Разделяет входную строку в массив подстрок в позициях, определенных указанным шаблоном регулярного выражения.Splits an input string into an array of substrings at the positions defined by a specified regular expression pattern. Дополнительные параметры определяют параметры, которые изменяют соответствующую операцию и интервал времени ожидания, если совпадение не найдено.Additional parameters specify options that modify the matching operation and a time-out interval if no match is found.

Split(String, String, RegexOptions) Split(String, String, RegexOptions) Split(String, String, RegexOptions) Split(String, String, RegexOptions)

Разделяет входную строку в массив подстрок в позициях, определенных указанным шаблоном регулярного выражения.Splits an input string into an array of substrings at the positions defined by a specified regular expression pattern. Указанные параметры изменяют операцию сопоставления.Specified options modify the matching operation.

Split(String, Int32, Int32) Split(String, Int32, Int32) Split(String, Int32, Int32) Split(String, Int32, Int32)

Разделяет входную строку указанное максимальное количество раз в массив подстрок в позициях, определенных регулярным выражением, указанным в конструкторе Regex.Splits an input string a specified maximum number of times into an array of substrings, at the positions defined by a regular expression specified in the Regex constructor. Поиск шаблона регулярного выражения начинается с указанной позиции элемента во входной строке.The search for the regular expression pattern starts at a specified character position in the input string.

Split(String, Int32) Split(String, Int32) Split(String, Int32) Split(String, Int32)

Разделяет входную строку указанное максимальное количество раз в массив подстрок в позициях, определенных регулярным выражением, указанным в конструкторе Regex.Splits an input string a specified maximum number of times into an array of substrings, at the positions defined by a regular expression specified in the Regex constructor.

Split(String) Split(String) Split(String) Split(String)

Разделяет входную строку в массив подстрок в позициях, определенных шаблоном регулярного выражения, указанным в конструкторе Regex.Splits an input string into an array of substrings at the positions defined by a regular expression pattern specified in the Regex constructor.

Split(String, String) Split(String, String) Split(String, String) Split(String, String)

Разделяет входную строку в массив подстрок в позициях, определенных шаблоном регулярного выражения.Splits an input string into an array of substrings at the positions defined by a regular expression pattern.

Split(String, String, RegexOptions, TimeSpan) Split(String, String, RegexOptions, TimeSpan) Split(String, String, RegexOptions, TimeSpan) Split(String, String, RegexOptions, TimeSpan)

Разделяет входную строку в массив подстрок в позициях, определенных указанным шаблоном регулярного выражения.Splits an input string into an array of substrings at the positions defined by a specified regular expression pattern. Дополнительные параметры определяют параметры, которые изменяют соответствующую операцию и интервал времени ожидания, если совпадение не найдено.Additional parameters specify options that modify the matching operation and a time-out interval if no match is found.

public:
 static cli::array <System::String ^> ^ Split(System::String ^ input, System::String ^ pattern, System::Text::RegularExpressions::RegexOptions options, TimeSpan matchTimeout);
public static string[] Split (string input, string pattern, System.Text.RegularExpressions.RegexOptions options, TimeSpan matchTimeout);
static member Split : string * string * System.Text.RegularExpressions.RegexOptions * TimeSpan -> string[]
Public Shared Function Split (input As String, pattern As String, options As RegexOptions, matchTimeout As TimeSpan) As String()

Параметры

input
String String String String

Строка для разделения.The string to split.

pattern
String String String String

Шаблон регулярного выражения для сопоставления.The regular expression pattern to match.

options
RegexOptions RegexOptions RegexOptions RegexOptions

Побитовая комбинация значений перечисления, предоставляющая параметры для сопоставления.A bitwise combination of the enumeration values that provide options for matching.

matchTimeout
TimeSpan TimeSpan TimeSpan TimeSpan

Интервал времени ожидания или InfiniteMatchTimeout, чтобы указать, что метод не должен превышать время ожидания.A time-out interval, or InfiniteMatchTimeout to indicate that the method should not time out.

Возвраты

String[]

Массив строк.A string array.

Исключения

Произошла ошибка анализа регулярного выражения.A regular expression parsing error occurred.

Значение параметра input или patternnull.input or pattern is null.

options не является допустимой битовой комбинацией значений RegexOptions .options is not a valid bitwise combination of RegexOptions values.

- или --or- Значение параметра matchTimeout отрицательное, равно нулю или больше, чем приблизительно 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.

Комментарии

Методы похожи на метод, за исключением того, Regex.Split что разделяет строку с разделителем, определенным регулярным выражением, а не набором символов. String.Split(Char[]) Regex.SplitThe Regex.Split methods are similar to the String.Split(Char[]) method, except that Regex.Split splits the string at a delimiter determined by a regular expression instead of a set of characters. Строка разделяется столько раз, сколько возможно.The string is split as many times as possible. Если разделитель не найден, возвращаемое значение содержит один элемент, значение которого является исходной input строкой.If no delimiter is found, the return value contains one element whose value is the original input string.

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.

Важно!

Скомпилированные регулярные выражения, используемые в вызовах статических Split методов, кэшируются автоматически.Compiled regular expressions used in calls to static Split methods are automatically cached. Для самостоятельного управления временем существования скомпилированных регулярных выражений используйте Split методы экземпляра.To manage the lifetime of compiled regular expressions yourself, use the instance Split methods.

Если несколько совпадений находятся рядом друг с другом, в массив вставляется пустая строка.If multiple matches are adjacent to one another, an empty string is inserted into the array. Например, разбиение строки на один дефис приводит к тому, что возвращаемый массив включает пустую строку в позицию, где обнаружены два смежных дефиса.For example, splitting a string on a single hyphen causes the returned array to include an empty string in the position where two adjacent hyphens are found.

Если совпадение находится в начале или в конце входной строки, то в начале или конце возвращаемого массива включается пустая строка.If a match is found at the beginning or the end of the input string, an empty string is included at the beginning or the end of the returned array. В следующем примере шаблон [a-z]+ регулярного выражения используется для разбиения входной строки на любой алфавитный символ в верхнем или нижнем регистре.The following example uses the regular expression pattern [a-z]+ to split an input string on any uppercase or lowercase alphabetic character. Поскольку строка начинается и заканчивается соответствующими буквами, значением первого и последнего элемента возвращаемого массива является String.Empty.Because the string begins and ends with matching alphabetic characters, the value of the first and last element of the returned array is String.Empty.

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string pattern = "[a-z]+";
      string input = "Abc1234Def5678Ghi9012Jklm";
      string[] result = Regex.Split(input, pattern, 
                                    RegexOptions.IgnoreCase,
                                    TimeSpan.FromMilliseconds(500));
      for (int ctr = 0; ctr < result.Length; ctr++) {
         Console.Write("'{0}'", result[ctr]);
         if (ctr < result.Length - 1) 
            Console.Write(", ");
      }
      Console.WriteLine();
   }
}
// The example displays the following output:
//       '', '1234', '5678', '9012', ''
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim pattern As String = "[a-z]+"
      Dim input As String = "Abc1234Def5678Ghi9012Jklm"
      Dim result() As String = Regex.Split(input, pattern, 
                                           RegexOptions.IgnoreCase,
                                           TimeSpan.FromMilliseconds(500))
      For ctr As Integer = 0 To result.Length - 1
         Console.Write("'{0}'", result(ctr))
         If ctr < result.Length - 1 Then Console.Write(", ")
      Next
      Console.WriteLine()
   End Sub               
End Module
' The example displays the following output:
'       '', '1234', '5678', '9012', ''

Если в Regex.Split выражении используются скобки записи, любой захваченный текст включается в результирующий массив строк.If capturing parentheses are used in a Regex.Split expression, any captured text is included in the resulting string array. Например, если разделить строку "Плам-груш" на дефис, помещенный в круглые скобки, возвращаемый массив включает строковый элемент, содержащий дефис.For example, if you split the string "plum-pear" on a hyphen placed within capturing parentheses, the returned array includes a string element that contains the hyphen.

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string input = "plum-pear";
      string pattern = "(-)";

      string[] substrings = Regex.Split(input, pattern);    // Split on hyphens
      foreach (string match in substrings)
      {
         Console.WriteLine("'{0}'", match);
      }
   }
}
// The example displays the following output:
//    'plum'
//    '-'
//    'pear'      
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim input As String = "plum-pear"
      Dim pattern As String = "(-)" 
      
      Dim substrings() As String = Regex.Split(input, pattern)    ' Split on hyphens.
      For Each match As String In substrings
         Console.WriteLine("'{0}'", match)
      Next
   End Sub
End Module
' The method writes the following to the console:
'    'plum'
'    '-'
'    'pear'      

Однако если шаблон регулярного выражения включает несколько наборов скобок записи, поведение этого метода зависит от версии .NET Framework.However, when the regular expression pattern includes multiple sets of capturing parentheses, the behavior of this method depends on the version of the .NET Framework. В .NET Framework 1,0 и 1,1, если совпадение не найдено в первом наборе скобок записи, записанный текст из дополнительных скобок записи не включается в возвращаемый массив.In the .NET Framework 1.0 and 1.1, if a match is not found within the first set of capturing parentheses, captured text from additional capturing parentheses is not included in the returned array. Начиная с .NET Framework 2,0, весь захваченный текст также добавляется в возвращаемый массив.Starting with the .NET Framework 2.0, all captured text is also added to the returned array. Например, следующий код использует два набора скобок записи для извлечения элементов даты, включая разделители даты, из строки даты.For example, the following code uses two sets of capturing parentheses to extract the elements of a date, including the date delimiters, from a date string. Первый набор скобок записи захватывает дефис, а второй набор захватывает косую черту.The first set of capturing parentheses captures the hyphen, and the second set captures the forward slash. Если пример кода компилируется и выполняется с .NET Framework 1,0 или 1,1, он исключает символы косой черты. Если он компилируется и запускается в .NET Framework 2,0 или более поздних версиях, он включает их.If the example code is compiled and run under the .NET Framework 1.0 or 1.1, it excludes the slash characters; if it is compiled and run under the .NET Framework 2.0 or later versions, it includes them.

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string input = @"07/14/2007";   
      string pattern = @"(-)|(/)";

      foreach (string result in Regex.Split(input, pattern)) 
      {
         Console.WriteLine("'{0}'", result);
      }
   }
}
// In .NET 1.0 and 1.1, the method returns an array of
// 3 elements, as follows:
//    '07'
//    '14'
//    '2007'
//
// In .NET 2.0 and later, the method returns an array of
// 5 elements, as follows:
//    '07'
//    '/'
//    '14'
//    '/'
//    '2007' 
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim input As String = "07/14/2007"   
      Dim pattern As String = "(-)|(/)"
      For Each result As String In Regex.Split(input, pattern) 
         Console.WriteLine("'{0}'", result)
      Next
   End Sub
End Module
' In .NET 1.0 and 1.1, the method returns an array of
' 3 elements, as follows:
'    '07'
'    '14'
'    '2007'
'
' In .NET 2.0 and later, the method returns an array of
' 5 elements, as follows:
'    '07'
'    '/'
'    '14'
'    '/'
'    '2007' 

Если регулярное выражение может соответствовать пустой строке, будет Split разделять строку на массив односимвольных строк, так как разделитель пустых строк можно найти в каждом расположении.If the regular expression can match the empty string, Split will split the string into an array of single-character strings because the empty string delimiter can be found at every location.

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.

Примечания для тех, кто вызывает этот метод

Рекомендуется присвоить matchTimeout параметру соответствующее значение, например две секунды.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.

Дополнительно

Split(String, String, RegexOptions) Split(String, String, RegexOptions) Split(String, String, RegexOptions) Split(String, String, RegexOptions)

Разделяет входную строку в массив подстрок в позициях, определенных указанным шаблоном регулярного выражения.Splits an input string into an array of substrings at the positions defined by a specified regular expression pattern. Указанные параметры изменяют операцию сопоставления.Specified options modify the matching operation.

public:
 static cli::array <System::String ^> ^ Split(System::String ^ input, System::String ^ pattern, System::Text::RegularExpressions::RegexOptions options);
public static string[] Split (string input, string pattern, System.Text.RegularExpressions.RegexOptions options);
static member Split : string * string * System.Text.RegularExpressions.RegexOptions -> string[]
Public Shared Function Split (input As String, pattern As String, options As RegexOptions) As String()

Параметры

input
String String String String

Строка для разделения.The string to split.

pattern
String String String String

Шаблон регулярного выражения для сопоставления.The regular expression pattern to match.

options
RegexOptions RegexOptions RegexOptions RegexOptions

Побитовая комбинация значений перечисления, предоставляющая параметры для сопоставления.A bitwise combination of the enumeration values that provide options for matching.

Возвраты

String[]

Массив строк.An array of strings.

Исключения

Произошла ошибка анализа регулярного выражения.A regular expression parsing error occurred.

Значение параметра input или patternnull.input or pattern 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.

Комментарии

Методы похожи на метод, за исключением того, Regex.Split что разделяет строку с разделителем, определенным регулярным выражением, а не набором символов. String.Split(Char[]) Regex.SplitThe Regex.Split methods are similar to the String.Split(Char[]) method, except that Regex.Split splits the string at a delimiter determined by a regular expression instead of a set of characters. Строка разделяется столько раз, сколько возможно.The string is split as many times as possible. Если разделитель не найден, возвращаемое значение содержит один элемент, значение которого является исходной input строкой.If no delimiter is found, the return value contains one element whose value is the original input string.

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.

Важно!

Скомпилированные регулярные выражения, используемые в вызовах статических Split методов, кэшируются автоматически.Compiled regular expressions used in calls to static Split methods are automatically cached. Для самостоятельного управления временем существования скомпилированных регулярных выражений используйте Split методы экземпляра.To manage the lifetime of compiled regular expressions yourself, use the instance Split methods.

Если несколько совпадений находятся рядом друг с другом, в массив вставляется пустая строка.If multiple matches are adjacent to one another, an empty string is inserted into the array. Например, разбиение строки на один дефис приводит к тому, что возвращаемый массив включает пустую строку в позицию, где обнаружены два смежных дефиса.For example, splitting a string on a single hyphen causes the returned array to include an empty string in the position where two adjacent hyphens are found.

Если совпадение находится в начале или в конце входной строки, то в начале или конце возвращаемого массива включается пустая строка.If a match is found at the beginning or the end of the input string, an empty string is included at the beginning or the end of the returned array. В следующем примере шаблон [a-z]+ регулярного выражения используется для разбиения входной строки на любой алфавитный символ в верхнем или нижнем регистре.The following example uses the regular expression pattern [a-z]+ to split an input string on any uppercase or lowercase alphabetic character. Поскольку строка начинается и заканчивается соответствующими буквами, значением первого и последнего элемента возвращаемого массива является String.Empty.Because the string begins and ends with matching alphabetic characters, the value of the first and last element of the returned array is String.Empty.

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string pattern = "[a-z]+";
      string input = "Abc1234Def5678Ghi9012Jklm";
      string[] result = Regex.Split(input, pattern, 
                                    RegexOptions.IgnoreCase);
      for (int ctr = 0; ctr < result.Length; ctr++) {
         Console.Write("'{0}'", result[ctr]);
         if (ctr < result.Length - 1) 
            Console.Write(", ");
      }
      Console.WriteLine();
   }
}
// The example displays the following output:
//       '', '1234', '5678', '9012', ''
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim pattern As String = "[a-z]+"
      Dim input As String = "Abc1234Def5678Ghi9012Jklm"
      Dim result() As String = Regex.Split(input, pattern, 
                                           RegexOptions.IgnoreCase)
      For ctr As Integer = 0 To result.Length - 1
         Console.Write("'{0}'", result(ctr))
         If ctr < result.Length - 1 Then Console.Write(", ")
      Next
      Console.WriteLine()
   End Sub               
End Module
' The example displays the following output:
'       '', '1234', '5678', '9012', ''

Если в Regex.Split выражении используются скобки записи, любой захваченный текст включается в результирующий массив строк.If capturing parentheses are used in a Regex.Split expression, any captured text is included in the resulting string array. Например, если разделить строку "Плам-груш" на дефис, помещенный в круглые скобки, возвращаемый массив включает строковый элемент, содержащий дефис.For example, if you split the string "plum-pear" on a hyphen placed within capturing parentheses, the returned array includes a string element that contains the hyphen.

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string input = "plum-pear";
      string pattern = "(-)";

      string[] substrings = Regex.Split(input, pattern);    // Split on hyphens
      foreach (string match in substrings)
      {
         Console.WriteLine("'{0}'", match);
      }
   }
}
// The example displays the following output:
//    'plum'
//    '-'
//    'pear'      
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim input As String = "plum-pear"
      Dim pattern As String = "(-)" 
      
      Dim substrings() As String = Regex.Split(input, pattern)    ' Split on hyphens.
      For Each match As String In substrings
         Console.WriteLine("'{0}'", match)
      Next
   End Sub
End Module
' The method writes the following to the console:
'    'plum'
'    '-'
'    'pear'      

Однако если шаблон регулярного выражения включает несколько наборов скобок записи, поведение этого метода зависит от версии .NET Framework.However, when the regular expression pattern includes multiple sets of capturing parentheses, the behavior of this method depends on the version of the .NET Framework. В .NET Framework 1,0 и 1,1, если совпадение не найдено в первом наборе скобок записи, записанный текст из дополнительных скобок записи не включается в возвращаемый массив.In the .NET Framework 1.0 and 1.1, if a match is not found within the first set of capturing parentheses, captured text from additional capturing parentheses is not included in the returned array. Начиная с .NET Framework 2,0, весь захваченный текст также добавляется в возвращаемый массив.Starting with the .NET Framework 2.0, all captured text is also added to the returned array. Например, следующий код использует два набора скобок записи для извлечения элементов даты, включая разделители даты, из строки даты.For example, the following code uses two sets of capturing parentheses to extract the elements of a date, including the date delimiters, from a date string. Первый набор скобок записи захватывает дефис, а второй набор захватывает косую черту.The first set of capturing parentheses captures the hyphen, and the second set captures the forward slash. Если пример кода компилируется и выполняется с .NET Framework 1,0 или 1,1, он исключает символы косой черты. Если он компилируется и запускается в .NET Framework 2,0 или более поздних версиях, он включает их.If the example code is compiled and run under the .NET Framework 1.0 or 1.1, it excludes the slash characters; if it is compiled and run under the .NET Framework 2.0 or later versions, it includes them.

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string input = @"07/14/2007";   
      string pattern = @"(-)|(/)";

      foreach (string result in Regex.Split(input, pattern)) 
      {
         Console.WriteLine("'{0}'", result);
      }
   }
}
// In .NET 1.0 and 1.1, the method returns an array of
// 3 elements, as follows:
//    '07'
//    '14'
//    '2007'
//
// In .NET 2.0 and later, the method returns an array of
// 5 elements, as follows:
//    '07'
//    '/'
//    '14'
//    '/'
//    '2007' 
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim input As String = "07/14/2007"   
      Dim pattern As String = "(-)|(/)"
      For Each result As String In Regex.Split(input, pattern) 
         Console.WriteLine("'{0}'", result)
      Next
   End Sub
End Module
' In .NET 1.0 and 1.1, the method returns an array of
' 3 elements, as follows:
'    '07'
'    '14'
'    '2007'
'
' In .NET 2.0 and later, the method returns an array of
' 5 elements, as follows:
'    '07'
'    '/'
'    '14'
'    '/'
'    '2007' 

Если регулярное выражение может соответствовать пустой строке, будет Split разделять строку на массив односимвольных строк, так как разделитель пустых строк можно найти в каждом расположении.If the regular expression can match the empty string, Split will split the string into an array of single-character strings because the empty string delimiter can be found at every location.

RegexMatchTimeoutException Исключение возникает, если время выполнения операции разбиения превышает интервал времени ожидания, указанный для домена приложения, в котором вызывается метод.The RegexMatchTimeoutException exception is thrown if the execution time of the split 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.

Примечания для тех, кто вызывает этот метод

Время ожидания этого метода истекает через интервал, равный значению времени ожидания по умолчанию для домена приложения, в котором вызывается метод.This method times out after an interval that is equal to the default time-out value of the application domain in which the method 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. Для разделения текста в шаблоне Split(String, String, RegexOptions, TimeSpan)рекомендуется использовать статический метод, который позволяет задать интервал времени ожидания.The recommended static method for splitting text on a pattern match is Split(String, String, RegexOptions, TimeSpan), which lets you set the time-out interval.

Дополнительно

Split(String, Int32, Int32) Split(String, Int32, Int32) Split(String, Int32, Int32) Split(String, Int32, Int32)

Разделяет входную строку указанное максимальное количество раз в массив подстрок в позициях, определенных регулярным выражением, указанным в конструкторе Regex.Splits an input string a specified maximum number of times into an array of substrings, at the positions defined by a regular expression specified in the Regex constructor. Поиск шаблона регулярного выражения начинается с указанной позиции элемента во входной строке.The search for the regular expression pattern starts at a specified character position in the input string.

public:
 cli::array <System::String ^> ^ Split(System::String ^ input, int count, int startat);
public string[] Split (string input, int count, int startat);
member this.Split : string * int * int -> string[]
Public Function Split (input As String, count As Integer, startat As Integer) As String()

Параметры

input
String String String String

Строка для разделения.The string to be split.

count
Int32 Int32 Int32 Int32

Максимальное количество возможных случаев разделения.The maximum number of times the split can occur.

startat
Int32 Int32 Int32 Int32

Позиция символа во входной строке, с которой начинается поиск.The character position in the input string where the search will begin.

Возвраты

String[]

Массив строк.An array of strings.

Исключения

Свойство input имеет значение null.input is null.

Параметр startat имеет значение меньше нуля или больше длины 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.Split что разделяет строку с разделителем, определенным регулярным выражением, а не набором символов. String.Split Regex.SplitThe Regex.Split methods are similar to the String.Split method, except that Regex.Split splits the string at a delimiter determined by a regular expression instead of a set of characters. Параметр задает максимальное число подстрок, на input которые разделяется строка. Последняя строка содержит неразделенную оставшуюся часть строки. countThe count parameter specifies the maximum number of substrings into which the input string is split; the last string contains the unsplit remainder of the string. Нулевое count значение обеспечивает по умолчанию разделение как можно меньшего числа раз.A count value of zero provides the default behavior of splitting as many times as possible. startat Параметр определяет точку, в которой начинается поиск первого разделителя (он может использоваться для пропуска начальных пробелов).The startat parameter defines the point at which the search for the first delimiter begins (this can be used for skipping leading white space).

Если в строке count+ 1 не найдено совпадений, метод возвращает одноэлементный массив, input содержащий строку.If no matches are found from the count+1 position in the string, the method returns a one-element array that contains the input string. Если найдено одно или несколько совпадений, первый элемент возвращаемого массива содержит первую часть строки из первого символа до одного символа перед совпадением.If one or more matches are found, the first element of the returned array contains the first portion of the string from the first character up to one character before the match.

Если несколько совпадений находятся рядом друг с другом, а число найденных совпадений не countменьше, то в массив вставляется пустая строка.If multiple matches are adjacent to one another and the number of matches found is at least two less than count, an empty string is inserted into the array. Аналогично, если найдено соответствие в startat, которое является первым символом в строке, первый элемент возвращаемого массива является пустой строкой.Similarly, if a match is found at startat, which is the first character in the string, the first element of the returned array is an empty string. Таким образом, пустые строки, являющиеся результатом смежных совпадений, учитываются при определении того, равно countли число сопоставленных подстрок.That is, empty strings that result from adjacent matches are counted in determining whether the number of matched substrings equals count. В следующем примере регулярное выражение \d+ используется для поиска начальной позиции первой подстроки числовых символов в строке, а затем для разделения строки до трех раз, начиная с этой позиции.In the following example, the regular expression \d+ is used to find the starting position of the first substring of numeric characters in a string, and then to split the string a maximum of three times starting at that position. Так как шаблон регулярного выражения соответствует началу входной строки, возвращаемый массив строк состоит из пустой строки, алфавитной строки из пяти символов и оставшейся части строки.Because the regular expression pattern matches the beginning of the input string, the returned string array consists of an empty string, a five-character alphabetic string, and the remainder of the string,

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string pattern = @"\d+";
      Regex rgx = new Regex(pattern);
      string input = "123ABCDE456FGHIJ789KLMNO012PQRST";
      Match m = rgx.Match(input);
      if (m.Success) { 
         int startAt = m.Index;
         string[] result = rgx.Split(input, 3, startAt);
         for (int ctr = 0; ctr < result.Length; ctr++) {
            Console.Write("'{0}'", result[ctr]);
            if (ctr < result.Length - 1)
               Console.Write(", ");
         }
         Console.WriteLine();
      }
   }
}
// The example displays the following output:
//       '', 'ABCDE', 'FGHIJKL789MNOPQ012'
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim pattern As String = "\d+"
      Dim rgx As New Regex(pattern)
      Dim input As String = "123ABCDE456FGHIJ789KLMNO012PQRST"
      Dim m As Match = rgx.Match(input)
      If m.Success Then 
         Dim startAt As Integer = m.Index
         Dim result() As String = rgx.Split(input, 3, startAt)
         For ctr As Integer = 0 To result.Length - 1
            Console.Write("'{0}'", result(ctr))
            If ctr < result.Length - 1 Then Console.Write(", ")
         Next
         Console.WriteLine()
      End If
   End Sub               
End Module
' The example displays the following output:
'       '', 'ABCDE', 'FGHIJKL789MNOPQ012'

Если в регулярном выражении используются скобки записи, любой захваченный текст включается в массив разделенных строк.If capturing parentheses are used in a regular expression, any captured text is included in the array of split strings. Однако все элементы массива, содержащие захваченный текст, не учитываются при определении того, достигнуто countли количество совпадений.However, any array elements that contain captured text are not counted in determining whether the number of matches has reached count. Например, разбиение строки "" Apple-Априкот-Плам-груш-граната-ананас-печь "в максимум четыре подстроки, начиная с символа 15 в строке, приводит к последующему массиву из семи элементов, как показано в приведенном ниже коде.For example, splitting the string '"apple-apricot-plum-pear-pomegranate-pineapple-peach" into a maximum of four substrings beginning at character 15 in the string results in a seven-element array, as the following code shows.

Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim pattern As String = "(-)"
      Dim input As String = "apple-apricot-plum-pear-pomegranate-pineapple-peach"

      Dim regex As Regex = New Regex(pattern)    
      ' Split on hyphens from 15th character on
      Dim substrings() As String = regex.Split(input, 4, 15)
      For Each match As String In substrings
         Console.WriteLine("'{0}'", match)
      Next
   End Sub  
End Module
' The example displays the following output:
'    'apple-apricot-plum'
'    '-'
'    'pear'
'    '-'
'    'pomegranate'
'    '-'
'    'pineapple-peach'      

Однако если шаблон регулярного выражения включает несколько наборов скобок записи, поведение этого метода зависит от версии .NET Framework.However, when the regular expression pattern includes multiple sets of capturing parentheses, the behavior of this method depends on the version of the .NET Framework. В .NET Framework 1,0 и 1,1, если совпадение не найдено в первом наборе скобок записи, записанный текст из дополнительных скобок записи не включается в возвращаемый массив.In .NET Framework 1.0 and 1.1, if a match is not found within the first set of capturing parentheses, captured text from additional capturing parentheses is not included in the returned array. Начиная с .NET Framework 2,0, весь захваченный текст также добавляется в возвращаемый массив.Starting with the .NET Framework 2.0, all captured text is also added to the returned array. Например, следующий код использует два набора скобок записи для извлечения отдельных слов в строке.For example, the following code uses two sets of capturing parentheses to extract the individual words in a string. Первый набор скобок записи захватывает дефис, а второй набор захватывает вертикальную линию.The first set of capturing parentheses captures the hyphen, and the second set captures the vertical bar. Если пример кода компилируется и запускается под .NET Framework 1,0 или 1,1, он исключает символы вертикальной черты. Если он компилируется и запускается в .NET Framework 2,0 или более поздних версиях, он включает их.If the example code is compiled and run under the .NET Framework 1.0 or 1.1, it excludes the vertical bar characters; if it is compiled and run under the .NET Framework 2.0 or later versions, it includes them.

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string pattern = "(-)|([|])";     // possible delimiters found in string
      string input = "apple|apricot|plum|pear|pomegranate|pineapple|peach";

      Regex regex = new Regex(pattern);    
      // Split on delimiters from 15th character on
      string[] substrings = regex.Split(input, 4, 15);
      foreach (string match in substrings)
      {
         Console.WriteLine("'{0}'", match);
      }
   }
}
// In .NET 2.0 and later, the method returns an array of
// 7 elements, as follows:
//    apple|apricot|plum'
//    '|'
//    'pear'
//    '|'
//    'pomegranate'
//    '|'
//    'pineapple|peach'
// In .NET 1.0 and 1.1, the method returns an array of
// 4 elements, as follows:
//    'apple|apricot|plum'
//    'pear'
//    'pomegranate'
//    'pineapple|peach'
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim pattern As String = "(-)|([|])"   ' possible delimiters found in string
      Dim input As String = "apple|apricot|plum|pear|pomegranate|pineapple|peach"

      Dim regex As Regex = New Regex(pattern)    
      ' Split on delimiters from 15th character on
      Dim substrings() As String = regex.Split(input, 4, 15)
      For Each match As String In substrings
         Console.WriteLine("'{0}'", match)
      Next
   End Sub
End Module
' In .NET 2.0, the method returns an array of
' 7 elements, as follows:
'    apple|apricot|plum'
'    '|'
'    'pear'
'    '|'
'    'pomegranate'
'    '|'
'    'pineapple|peach'
' In .NET 1.0 and 1.1, the method returns an array of
' 4 elements, as follows:
'    'apple|apricot|plum'
'    'pear'
'    'pomegranate'
'    'pineapple|peach'

Если регулярное выражение может соответствовать пустой строке, будет Split разделять строку на массив односимвольных строк, так как разделитель пустых строк можно найти в каждом расположении.If the regular expression can match the empty string, Split will split the string into an array of single-character strings because the empty string delimiter can be found at every location. В следующем примере строка "символы" разбивается на столько элементов, сколько содержит входная строка, начиная с символа "a".The following example splits the string "characters" into as many elements as the input string contains, starting with the character "a". Поскольку строка NULL соответствует концу входной строки, в конце возвращаемого массива вставляется пустая строка.Because the null string matches the end of the input string, a null string is inserted at the end of the returned array.

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string input = "characters";
      Regex regex = new Regex("");
      string[] substrings = regex.Split(input, input.Length, input.IndexOf("a"));
      Console.Write("{");
      for(int ctr = 0; ctr < substrings.Length; ctr++)
      {
         Console.Write(substrings[ctr]);
         if (ctr < substrings.Length - 1)
            Console.Write(", ");
      }
      Console.WriteLine("}");
   }
}
// The example displays the following output:   
//    {, c, h, a, r, a, c, t, e, rs}
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim input As String = "characters"
      Dim regex As New Regex("")
      Dim substrings() As String = regex.Split(input, input.Length, _
                                               input.IndexOf("a"))
      Console.Write("{")
      For ctr As Integer = 0 to substrings.Length - 1
         Console.Write(substrings(ctr))
         If ctr < substrings.Length - 1 Then Console.Write(", ")
      Next
      Console.WriteLine("}")
   End Sub
End Module
' The example produces the following output:   
'    {, c, h, a, r, a, c, t, e, rs}

Исключение возникает, если время выполнения операции разбиения превышает интервал времени ожидания, заданный Regex.Regex(String, RegexOptions, TimeSpan) конструктором. RegexMatchTimeoutExceptionThe RegexMatchTimeoutException exception is thrown if the execution time of the split 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

Дополнительно

Split(String, Int32) Split(String, Int32) Split(String, Int32) Split(String, Int32)

Разделяет входную строку указанное максимальное количество раз в массив подстрок в позициях, определенных регулярным выражением, указанным в конструкторе Regex.Splits an input string a specified maximum number of times into an array of substrings, at the positions defined by a regular expression specified in the Regex constructor.

public:
 cli::array <System::String ^> ^ Split(System::String ^ input, int count);
public string[] Split (string input, int count);
member this.Split : string * int -> string[]
Public Function Split (input As String, count As Integer) As String()

Параметры

input
String String String String

Строка для разделения.The string to be split.

count
Int32 Int32 Int32 Int32

Максимальное количество возможных случаев разделения.The maximum number of times the split can occur.

Возвраты

String[]

Массив строк.An array of strings.

Исключения

Свойство input имеет значение null.input is null.

Время ожидания истекло.A time-out occurred. Дополнительные сведения о времени ожидания см. в разделе "Примечания".For more information about time-outs, see the Remarks section.

Комментарии

Методы похожи на метод, за исключением того, Regex.Split что разделяет строку с разделителем, определенным регулярным выражением, а не набором символов. String.Split Regex.SplitThe Regex.Split methods are similar to the String.Split method, except that Regex.Split splits the string at a delimiter determined by a regular expression instead of a set of characters. Параметр задает максимальное число подстрок, в input которые может быть разбита строка. Последняя строка содержит неразделенную оставшуюся часть строки. countThe count parameter specifies the maximum number of substrings into which the input string can be split; the last string contains the unsplit remainder of the string. Нулевое count значение обеспечивает по умолчанию разделение как можно меньшего числа раз.A count value of zero provides the default behavior of splitting as many times as possible.

Если несколько совпадений находятся рядом друг с другом или если в начале или в конце inputобнаружено совпадение, а число найденных совпадений не countменьше, то в массив вставляется пустая строка.If multiple matches are adjacent to one another or if a match is found at the beginning or end of input, and the number of matches found is at least two less than count, an empty string is inserted into the array. Таким образом, пустые строки, являющиеся результатом смежных совпадений или из совпадений в начале или конце входной строки, учитываются при определении того, равно countли число сопоставленных подстрок.That is, empty strings that result from adjacent matches or from matches at the beginning or end of the input string are counted in determining whether the number of matched substrings equals count. В следующем примере регулярное выражение /d+ используется для разбиения входной строки, включающей одну или несколько десятичных цифр, в максимум три подстроки.In the following example, the regular expression /d+ is used to split an input string that includes one or more decimal digits into a maximum of three substrings. Поскольку начало входной строки соответствует шаблону регулярного выражения, первый элемент массива содержит String.Empty, второй — Первый набор букв во входной строке, а третий содержит остаток строки. Это следует за третьим совпадением.Because the beginning of the input string matches the regular expression pattern, the first array element contains String.Empty, the second contains the first set of alphabetic characters in the input string, and the third contains the remainder of the string that follows the third match.

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string pattern = @"\d+";
      Regex rgx = new Regex(pattern);
      string input = "123ABCDE456FGHIJKL789MNOPQ012";
      
      string[] result = rgx.Split(input, 3);
      for (int ctr = 0; ctr < result.Length; ctr++) {
         Console.Write("'{0}'", result[ctr]);
         if (ctr < result.Length - 1) 
            Console.Write(", ");
      }
      Console.WriteLine();
   }
}
// The example displays the following output:
//       '', 'ABCDE', 'FGHIJKL789MNOPQ012'
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim pattern As String = "\d+"
      Dim rgx As New Regex(pattern)
      Dim input As String = "123ABCDE456FGHIJKL789MNOPQ012"
      
      Dim result() As String = rgx.Split(input, 3)
      For ctr As Integer = 0 To result.Length - 1
         Console.Write("'{0}'", result(ctr))
         If ctr < result.Length - 1 Then Console.Write(", ")
      Next
      Console.WriteLine()
   End Sub               
End Module
' The example displays the following output:
'       '', 'ABCDE', 'FGHIJKL789MNOPQ012'

Если в регулярном выражении используются скобки записи, любой захваченный текст включается в массив разделенных строк.If capturing parentheses are used in a regular expression, any captured text is included in the array of split strings. Однако все элементы массива, содержащие захваченный текст, не учитываются при определении того, достигнуто countли количество совпадений.However, any array elements that contain captured text are not counted in determining whether the number of matches has reached count. Например, при разделении строки "Apple-Априкот-Плам-груш-" в максимум четыре подстроки создается массив из семи элементов, как показано в следующем коде.For example, splitting the string "apple-apricot-plum-pear-banana" into a maximum of four substrings results in a seven-element array, as the following code shows.

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string pattern = "(-)";
      string input = "apple-apricot-plum-pear-banana";
      Regex regex = new Regex(pattern);         // Split on hyphens.
      string[] substrings = regex.Split(input, 4);
      foreach (string match in substrings)
      {
         Console.WriteLine("'{0}'", match);
      }
   }
}
// The example displays the following output:
//       'apple'
//       '-'
//       'apricot'
//       '-'
//       'plum'
//       '-'
//       'pear-banana'      
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim pattern As String = "(-)"
      Dim input As String = "apple-apricot-plum-pear-banana"
      Dim regex As Regex = New Regex(pattern)         ' Split on hyphens.
      Dim substrings() As String = regex.Split(input, 4)
      For Each match As String In substrings
         Console.WriteLine("'{0}'", match)
      Next
   End Sub
End Module
' The example displays the following output:
'    'apple'
'    '-'
'    'apricot'
'    '-'
'    'plum'
'    '-'
'    'pear-banana'      

Однако если шаблон регулярного выражения включает несколько наборов скобок записи, поведение этого метода зависит от версии .NET Framework.However, when the regular expression pattern includes multiple sets of capturing parentheses, the behavior of this method depends on the version of the .NET Framework. В .NET Framework 1,0 и 1,1 в возвращаемый массив включается только захваченный текст из первого набора скобок записи.In the .NET Framework 1.0 and 1.1, only captured text from the first set of capturing parentheses is included in the returned array. Начиная с .NET Framework 2,0, весь захваченный текст добавляется в возвращаемый массив.Starting with the .NET Framework 2.0, all captured text is added to the returned array. Однако элементы в возвращаемом массиве, содержащие захваченный текст, не учитываются при определении того, равно countли число сопоставленных подстрок.However, elements in the returned array that contain captured text are not counted in determining whether the number of matched substrings equals count. Например, в следующем коде регулярное выражение использует два набора скобок записи для извлечения элементов даты из строки даты.For example, in the following code, a regular expression uses two sets of capturing parentheses to extract the elements of a date from a date string. Первый набор скобок записи захватывает дефис, а второй набор захватывает косую черту.The first set of capturing parentheses captures the hyphen, and the second set captures the forward slash. Затем при вызове Split(String, Int32) метода в возвращаемом массиве указывается не более двух элементов.The call to the Split(String, Int32) method then specifies a maximum of two elements in the returned array. Если пример кода компилируется и выполняется в .NET Framework 1,0 или 1,1, метод возвращает массив строк из двух элементов.If the example code is compiled and run under the .NET Framework 1.0 or 1.1, the method returns a two-element string array. Если он компилируется и запускается в .NET Framework 2,0 или более поздних версиях, метод возвращает массив строк из трех элементов.If it is compiled and run under the .NET Framework 2.0 or later versions, the method returns a three-element string array.

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string input = @"07/14/2007";   
      string pattern = @"(-)|(/)";
      Regex regex = new Regex(pattern);
      foreach (string result in regex.Split(input, 2)) 
      {
         Console.WriteLine("'{0}'", result);
      }
   }
}
// Under .NET 1.0 and 1.1, the method returns an array of
// 2 elements, as follows:
//    '07'
//    '14/2007'
//
// Under .NET 2.0 and later, the method returns an array of
// 3 elements, as follows:
//    '07'
//    '/'
//    '14/2007' 
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim input As String = "07/14/2007"   
      Dim pattern As String = "(-)|(/)"
      Dim regex As Regex = New Regex(pattern)
      For Each result As String In regex.Split(input, 2) 
         Console.WriteLine("'{0}'", result)
      Next
   End Sub
End Module
' In .NET 1.0 and 1.1, the method returns an array of
' 2 elements, as follows:
'    '07'
'    '14/2007'
'
' In .NET 2.0 and later, the method returns an array of
' 3 elements, as follows:
'    '07'
'    '/'
'    '14/2007' 

Если регулярное выражение может соответствовать пустой строке, будет Split(String, Int32) разделять строку на массив односимвольных строк, так как разделитель пустых строк можно найти в каждом расположении.If the regular expression can match the empty string, Split(String, Int32) will split the string into an array of single-character strings because the empty string delimiter can be found at every location. В следующем примере строка "символы" разбивается на столько элементов, сколько есть во входной строке.The following example splits the string "characters" into as many elements as there are in the input string. Поскольку строка NULL соответствует началу входной строки, в начало возвращаемого массива вставляется пустая строка.Because the null string matches the beginning of the input string, a null string is inserted at the beginning of the returned array. В результате десятый элемент будет состоять из двух символов в конце входной строки.This causes the tenth element to consist of the two characters at the end of the input string.

Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim input As String = "characters"
      Dim regex As New Regex("")
      Dim substrings() As String = regex.Split(input, input.Length)
      Console.Write("{")
      For ctr As Integer = 0 to substrings.Length - 1
         Console.Write(substrings(ctr))
         if ctr < substrings.Length - 1 Then Console.Write(", ")
      Next
      Console.WriteLine("}")
   End Sub
End Module
' The example displays the following output:   
'    {, c, h, a, r, a, c, t, e, rs}

Исключение возникает, если время выполнения операции разбиения превышает интервал времени ожидания, заданный Regex.Regex(String, RegexOptions, TimeSpan) конструктором. RegexMatchTimeoutExceptionThe RegexMatchTimeoutException exception is thrown if the execution time of the split 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

Дополнительно

Split(String) Split(String) Split(String) Split(String)

Разделяет входную строку в массив подстрок в позициях, определенных шаблоном регулярного выражения, указанным в конструкторе Regex.Splits an input string into an array of substrings at the positions defined by a regular expression pattern specified in the Regex constructor.

public:
 cli::array <System::String ^> ^ Split(System::String ^ input);
public string[] Split (string input);
member this.Split : string -> string[]
Public Function Split (input As String) As String()

Параметры

input
String String String String

Строка для разделения.The string to split.

Возвраты

String[]

Массив строк.An array of strings.

Исключения

Свойство input имеет значение null.input is null.

Время ожидания истекло.A time-out occurred. Дополнительные сведения о времени ожидания см. в разделе "Примечания".For more information about time-outs, see the Remarks section.

Комментарии

Методы похожи на метод, за исключением того, Regex.Split что разделяет строку с разделителем, определенным регулярным выражением, а не набором символов. String.Split(Char[]) Regex.SplitThe Regex.Split methods are similar to the String.Split(Char[]) method, except that Regex.Split splits the string at a delimiter determined by a regular expression instead of a set of characters. Строка разделяется столько раз, сколько возможно.The string is split as many times as possible. Если разделитель не найден, возвращаемое значение содержит один элемент, значение которого является исходной входной строкой.If no delimiter is found, the return value contains one element whose value is the original input string.

Если несколько совпадений находятся рядом друг с другом, в массив вставляется пустая строка.If multiple matches are adjacent to one another, an empty string is inserted into the array. Например, разбиение строки на один дефис приводит к тому, что возвращаемый массив включает пустую строку в позицию, где обнаружены два смежных дефиса, как показано в следующем коде.For example, splitting a string on a single hyphen causes the returned array to include an empty string in the position where two adjacent hyphens are found, as the following code shows.

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      Regex regex = new Regex("-");         // Split on hyphens.
      string[] substrings = regex.Split("plum--pear");
      foreach (string match in substrings)
      {
         Console.WriteLine("'{0}'", match);
      }
   }
}
// The example displays the following output:
//    'plum'
//    ''
//    'pear'      
Imports System.Text.RegularExpressions

Module RegexSplit
   Public Sub Main()
      Dim regex As Regex = New Regex("-")         ' Split on hyphens.
      Dim substrings() As String = regex.Split("plum--pear")
      For Each match As String In substrings
         Console.WriteLine("'{0}'", match)
      Next
   End Sub
End Module
' The example displays the following output:
'    'plum'
'    ''
'    'pear'      

Если совпадение находится в начале или в конце входной строки, то в начале или конце возвращаемого массива включается пустая строка.If a match is found at the beginning or the end of the input string, an empty string is included at the beginning or the end of the returned array. В следующем примере шаблон \d+ регулярного выражения используется для разбиения входной строки на числовые символы.The following example uses the regular expression pattern \d+ to split an input string on numeric characters. Поскольку строка начинается и заканчивается соответствующими числовыми символами, значением первого и последнего элемента возвращаемого массива является String.Empty.Because the string begins and ends with matching numeric characters, the value of the first and last element of the returned array is String.Empty.

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string pattern = @"\d+";
      Regex rgx = new Regex(pattern);
      string input = "123ABCDE456FGHIJKL789MNOPQ012";
      
      string[] result = rgx.Split(input);
      for (int ctr = 0; ctr < result.Length; ctr++) {
         Console.Write("'{0}'", result[ctr]);
         if (ctr < result.Length - 1) 
            Console.Write(", ");
      }
      Console.WriteLine();
   }
}
// The example displays the following output:
//       '', 'ABCDE', 'FGHIJKL', 'MNOPQ', ''
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim pattern As String = "\d+"
      Dim rgx As New Regex(pattern)
      Dim input As String = "123ABCDE456FGHIJKL789MNOPQ012"
      
      Dim result() As String = rgx.Split(input)
      For ctr As Integer = 0 To result.Length - 1
         Console.Write("'{0}'", result(ctr))
         If ctr < result.Length - 1 Then Console.Write(", ")
      Next
      Console.WriteLine()
   End Sub               
End Module
' The example displays the following output:
'       '', 'ABCDE', 'FGHIJKL', 'MNOPQ', ''

Если в Regex.Split выражении используются скобки записи, любой захваченный текст включается в результирующий массив строк.If capturing parentheses are used in a Regex.Split expression, any captured text is included in the resulting string array. Например, если разделить строку "Плам-груш" на дефис, помещенный в круглые скобки, возвращаемый массив включает строковый элемент, содержащий дефис.For example, if you split the string "plum-pear" on a hyphen placed within capturing parentheses, the returned array includes a string element that contains the hyphen.

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      Regex regex = new Regex("(-)");         // Split on hyphens.
      string[] substrings = regex.Split("plum-pear");
      foreach (string match in substrings)
      {
         Console.WriteLine("'{0}'", match);
      }
   }
}
// The example displays the following output:
//    'plum'
//    '-'
//    'pear'      
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim regex As Regex = New Regex("(-)")          ' Split on hyphens.
      Dim substrings() As String = regex.Split("plum-pear")
      For Each match As String In substrings
         Console.WriteLine("'{0}'", match)
      Next
   End Sub
End Module
' The example displays the following output:
'    'plum'
'    '-'
'    'pear'      

Однако если шаблон регулярного выражения включает несколько наборов скобок записи, поведение этого метода зависит от версии .NET Framework.However, when the regular expression pattern includes multiple sets of capturing parentheses, the behavior of this method depends on the version of the .NET Framework. В .NET Framework 1,0 и 1,1, если совпадение не найдено в первом наборе скобок записи, записанный текст из дополнительных скобок записи не включается в возвращаемый массив.In the .NET Framework 1.0 and 1.1, if a match is not found within the first set of capturing parentheses, captured text from additional capturing parentheses is not included in the returned array. Начиная с .NET Framework 2,0, весь захваченный текст также добавляется в возвращаемый массив.Starting with the .NET Framework 2.0, all captured text is also added to the returned array. Например, следующий код использует два набора скобок записи для извлечения элементов даты, включая разделители даты, из строки даты.For example, the following code uses two sets of capturing parentheses to extract the elements of a date, including the date delimiters, from a date string. Первый набор скобок записи захватывает дефис, а второй набор захватывает косую черту.The first set of capturing parentheses captures the hyphen, and the second set captures the forward slash. Если пример кода компилируется и выполняется с .NET Framework 1,0 или 1,1, он исключает символы косой черты. Если он компилируется и запускается в .NET Framework 2,0 или более поздних версиях, он включает их.If the example code is compiled and run under the .NET Framework 1.0 or 1.1, it excludes the slash characters; if it is compiled and run under the .NET Framework 2.0 or later versions, it includes them.

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string input = @"07/14/2007";   
      string pattern = @"(-)|(/)";
      Regex regex = new Regex(pattern);
      foreach (string result in regex.Split(input)) 
      {
         Console.WriteLine("'{0}'", result);
      }
   }
}
// Under .NET 1.0 and 1.1, the method returns an array of
// 3 elements, as follows:
//    '07'
//    '14'
//    '2007'
//
// Under .NET 2.0 and later, the method returns an array of
// 5 elements, as follows:
//    '07'
//    '/'
//    '14'
//    '/'
//    '2007' 
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim input As String = "07/14/2007"   
      Dim pattern As String = "(-)|(/)"
      Dim regex As Regex = New Regex(pattern)
      For Each result As String In regex.Split(input) 
         Console.WriteLine("'{0}'", result)
      Next
   End Sub
End Module
' In .NET 1.0 and 1.1, the method returns an array of
' 3 elements, as follows:
'    '07'
'    '14'
'    '2007'
'
' In .NET 2.0 and later, the method returns an array of
' 5 elements, as follows:
'    '07'
'    '/'
'    '14'
'    '/'
'    '2007' 

Если регулярное выражение может соответствовать пустой строке, будет Split(String) разделять строку на массив односимвольных строк, так как разделитель пустых строк можно найти в каждом расположении.If the regular expression can match the empty string, Split(String) will split the string into an array of single-character strings because the empty string delimiter can be found at every location. Например:For example:

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string input = "characters";
      Regex regex = new Regex("");
      string[] substrings = regex.Split(input);
      Console.Write("{");
      for(int ctr = 0; ctr < substrings.Length; ctr++)
      {
         Console.Write(substrings[ctr]);
         if (ctr < substrings.Length - 1)
            Console.Write(", ");
      }
      Console.WriteLine("}");
   }
}
// The example displays the following output:   
//    {, c, h, a, r, a, c, t, e, r, s, }
Imports System.Text.RegularExpressions

Module Main
   Public Sub Main()
      Dim input As String = "characters"
      Dim regex As New Regex("")
      Dim substrings() As String = regex.Split(input)
      Console.Write("{")
      For ctr As Integer = 0 to substrings.Length - 1
         Console.Write(substrings(ctr))
         If ctr < substrings.Length - 1 Then Console.Write(", ")
      Next
      Console.WriteLine("}")
   End Sub
End Module
' The example produces the following output:   
'    {, c, h, a, r, a, c, t, e, r, s, }

Обратите внимание, что возвращаемый массив также содержит пустую строку в начале и в конце массива.Note that the returned array also includes an empty string at the beginning and end of the array.

Исключение возникает, если время выполнения операции разбиения превышает интервал времени ожидания, заданный Regex.Regex(String, RegexOptions, TimeSpan) конструктором. RegexMatchTimeoutExceptionThe RegexMatchTimeoutException exception is thrown if the execution time of the split 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

Дополнительно

Split(String, String) Split(String, String) Split(String, String) Split(String, String)

Разделяет входную строку в массив подстрок в позициях, определенных шаблоном регулярного выражения.Splits an input string into an array of substrings at the positions defined by a regular expression pattern.

public:
 static cli::array <System::String ^> ^ Split(System::String ^ input, System::String ^ pattern);
public static string[] Split (string input, string pattern);
static member Split : string * string -> string[]
Public Shared Function Split (input As String, pattern As String) As String()

Параметры

input
String String String String

Строка для разделения.The string to split.

pattern
String String String String

Шаблон регулярного выражения для сопоставления.The regular expression pattern to match.

Возвраты

String[]

Массив строк.An array of strings.

Исключения

Произошла ошибка анализа регулярного выражения.A regular expression parsing error occurred.

Значение параметра input или patternnull.input or pattern is null.

Время ожидания истекло.A time-out occurred. Дополнительные сведения о времени ожидания см. в разделе "Примечания".For more information about time-outs, see the Remarks section.

Комментарии

Методы похожи на метод, за исключением того, Regex.Split что разделяет строку с разделителем, определенным регулярным выражением, а не набором символов. String.Split Regex.SplitThe Regex.Split methods are similar to the String.Split method, except that Regex.Split splits the string at a delimiter determined by a regular expression instead of a set of characters. input Строка разделяется столько раз, сколько возможно.The input string is split as many times as possible. Если pattern input в строке не найден, возвращаемое значение содержит один элемент, значение которого является исходной строкой. inputIf pattern is not found in the input string, the return value contains one element whose value is the original input string.

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.

Важно!

Скомпилированные регулярные выражения, используемые в вызовах статических Split методов, кэшируются автоматически.Compiled regular expressions used in calls to static Split methods are automatically cached. Для самостоятельного управления временем существования скомпилированных регулярных выражений используйте Split методы экземпляра.To manage the lifetime of compiled regular expressions yourself, use the instance Split methods.

Если несколько совпадений находятся рядом друг с другом, в массив вставляется пустая строка.If multiple matches are adjacent to one another, an empty string is inserted into the array. Например, разбиение строки на один дефис приводит к тому, что возвращаемый массив включает пустую строку в позицию, где обнаружены два смежных дефиса, как показано в следующем коде.For example, splitting a string on a single hyphen causes the returned array to include an empty string in the position where two adjacent hyphens are found, as the following code shows.

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string input = "plum--pear";
      string pattern = "-";            // Split on hyphens
      
      string[] substrings = Regex.Split(input, pattern);
      foreach (string match in substrings)
      {
         Console.WriteLine("'{0}'", match);
      }
   }
}
// The method displays the following output:
//    'plum'
//    ''
//    'pear'      
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim input As String = "plum--pear"
      Dim pattern As String = "-"          ' Split on hyphens
      
      Dim substrings() As String = Regex.Split(input, pattern)
      For Each match As String In substrings
         Console.WriteLine("'{0}'", match)
      Next
   End Sub  
End Module
' The example displays the following output:
'    'plum'
'    ''
'    'pear'      

Если совпадение находится в начале или в конце входной строки, то в начале или конце возвращаемого массива включается пустая строка.If a match is found at the beginning or the end of the input string, an empty string is included at the beginning or the end of the returned array. В следующем примере шаблон \d+ регулярного выражения используется для разбиения входной строки на числовые символы.The following example uses the regular expression pattern \d+ to split an input string on numeric characters. Поскольку строка начинается и заканчивается соответствующими числовыми символами, значением первого и последнего элемента возвращаемого массива является String.Empty.Because the string begins and ends with matching numeric characters, the value of the first and last element of the returned array is String.Empty.

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string pattern = @"\d+";
      string input = "123ABCDE456FGHIJKL789MNOPQ012";
      string[] result = Regex.Split(input, pattern);
      for (int ctr = 0; ctr < result.Length; ctr++) {
         Console.Write("'{0}'", result[ctr]);
         if (ctr < result.Length - 1) 
            Console.Write(", ");
      }
      Console.WriteLine();
   }
}
// The example displays the following output:
//       '', 'ABCDE', 'FGHIJKL', 'MNOPQ', ''
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim pattern As String = "\d+"
      Dim input As String = "123ABCDE456FGHIJKL789MNOPQ012"
      Dim result() As String = Regex.Split(input, pattern)
      For ctr As Integer = 0 To result.Length - 1
         Console.Write("'{0}'", result(ctr))
         If ctr < result.Length - 1 Then Console.Write(", ")
      Next
      Console.WriteLine()
   End Sub               
End Module
' The example displays the following output:
'       '', 'ABCDE', 'FGHIJKL', 'MNOPQ', ''

Если в Regex.Split выражении используются скобки записи, любой захваченный текст включается в результирующий массив строк.If capturing parentheses are used in a Regex.Split expression, any captured text is included in the resulting string array. Например, если разделить строку "Плам-груш" на дефис, помещенный в круглые скобки, возвращаемый массив включает строковый элемент, содержащий дефис.For example, if you split the string "plum-pear" on a hyphen placed within capturing parentheses, the returned array includes a string element that contains the hyphen.

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string input = "plum-pear";
      string pattern = "(-)";

      string[] substrings = Regex.Split(input, pattern);    // Split on hyphens
      foreach (string match in substrings)
      {
         Console.WriteLine("'{0}'", match);
      }
   }
}
// The example displays the following output:
//    'plum'
//    '-'
//    'pear'      
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim input As String = "plum-pear"
      Dim pattern As String = "(-)" 
      
      Dim substrings() As String = Regex.Split(input, pattern)    ' Split on hyphens.
      For Each match As String In substrings
         Console.WriteLine("'{0}'", match)
      Next
   End Sub
End Module
' The method writes the following to the console:
'    'plum'
'    '-'
'    'pear'      

Однако если шаблон регулярного выражения включает несколько наборов скобок записи, поведение этого метода зависит от версии .NET Framework.However, when the regular expression pattern includes multiple sets of capturing parentheses, the behavior of this method depends on the version of the .NET Framework. В .NET Framework 1,0 и 1,1, если совпадение не найдено в первом наборе скобок записи, записанный текст из дополнительных скобок записи не включается в возвращаемый массив.In the .NET Framework 1.0 and 1.1, if a match is not found within the first set of capturing parentheses, captured text from additional capturing parentheses is not included in the returned array. Начиная с .NET Framework 2,0, весь захваченный текст также добавляется в возвращаемый массив.Starting with the .NET Framework 2.0, all captured text is also added to the returned array. Например, следующий код использует два набора скобок записи для извлечения элементов даты, включая разделители даты, из строки даты.For example, the following code uses two sets of capturing parentheses to extract the elements of a date, including the date delimiters, from a date string. Первый набор скобок записи захватывает дефис, а второй набор захватывает косую черту.The first set of capturing parentheses captures the hyphen, and the second set captures the forward slash. Если пример кода компилируется и выполняется с .NET Framework 1,0 или 1,1, он исключает символы косой черты. Если он компилируется и запускается в .NET Framework 2,0 или более поздних версиях, он включает их.If the example code is compiled and run under the .NET Framework 1.0 or 1.1, it excludes the slash characters; if it is compiled and run under the .NET Framework 2.0 or later versions, it includes them.

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string input = @"07/14/2007";   
      string pattern = @"(-)|(/)";

      foreach (string result in Regex.Split(input, pattern)) 
      {
         Console.WriteLine("'{0}'", result);
      }
   }
}
// In .NET 1.0 and 1.1, the method returns an array of
// 3 elements, as follows:
//    '07'
//    '14'
//    '2007'
//
// In .NET 2.0 and later, the method returns an array of
// 5 elements, as follows:
//    '07'
//    '/'
//    '14'
//    '/'
//    '2007' 
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim input As String = "07/14/2007"   
      Dim pattern As String = "(-)|(/)"
      For Each result As String In Regex.Split(input, pattern) 
         Console.WriteLine("'{0}'", result)
      Next
   End Sub
End Module
' In .NET 1.0 and 1.1, the method returns an array of
' 3 elements, as follows:
'    '07'
'    '14'
'    '2007'
'
' In .NET 2.0 and later, the method returns an array of
' 5 elements, as follows:
'    '07'
'    '/'
'    '14'
'    '/'
'    '2007' 

Если регулярное выражение может соответствовать пустой строке, будет Split разделять строку на массив односимвольных строк, так как разделитель пустых строк можно найти в каждом расположении.If the regular expression can match the empty string, Split will split the string into an array of single-character strings because the empty string delimiter can be found at every location. Например:For example:

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string input = "characters";
      string[] substrings = Regex.Split(input, "");
      Console.Write("{");
      for(int ctr = 0; ctr < substrings.Length; ctr++)
      {
         Console.Write("'{0}'", substrings[ctr]);
         if (ctr < substrings.Length - 1)
            Console.Write(", ");
      }
      Console.WriteLine("}");
   }
}
// The example produces the following output:   
//    {'', 'c', 'h', 'a', 'r', 'a', 'c', 't', 'e', 'r', 's', ''}
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim input As String = "characters"
      Dim substrings() As String = Regex.Split(input, "")
      Console.Write("{")
      For ctr As Integer = 0 to substrings.Length - 1
         Console.Write("'{0}'", substrings(ctr))
         If ctr < substrings.Length - 1 Then Console.Write(", ")
      Next
      Console.WriteLine("}")
   End Sub
End Module
' The example produces the following output:   
'    {'', 'c', 'h', 'a', 'r', 'a', 'c', 't', 'e', 'r', 's', ''}

Обратите внимание, что возвращаемый массив также содержит пустую строку в начале и в конце массива.Note that the returned array also includes an empty string at the beginning and end of the array.

RegexMatchTimeoutException Исключение возникает, если время выполнения операции разбиения превышает интервал времени ожидания, указанный для домена приложения, в котором вызывается метод.The RegexMatchTimeoutException exception is thrown if the execution time of the split 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.

Примечания для тех, кто вызывает этот метод

Время ожидания этого метода истекает через интервал, равный значению времени ожидания по умолчанию для домена приложения, в котором вызывается метод.This method times out after an interval that is equal to the default time-out value of the application domain in which the method 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. Для разделения текста в шаблоне Split(String, String, RegexOptions, TimeSpan)рекомендуется использовать статический метод, который позволяет задать интервал времени ожидания.The recommended static method for splitting text on a pattern match is Split(String, String, RegexOptions, TimeSpan), which lets you set the time-out interval.

Дополнительно

Применяется к