Прочитать на английском

Поделиться через


Regex.Match Метод

Определение

Выполняет поиск входной строки для подстроки, которая соответствует шаблону регулярного выражения и возвращает первое вхождение в виде одного объекта Match.

Перегрузки

Match(String)

Выполняет поиск указанной входной строки для первого вхождения регулярного выражения, указанного в конструкторе Regex.

Match(String, Int32)

Выполняет поиск входной строки для первого вхождения регулярного выражения, начиная с указанной начальной позиции в строке.

Match(String, String)

Выполняет поиск указанной входной строки для первого вхождения указанного регулярного выражения.

Match(String, Int32, Int32)

Выполняет поиск входной строки для первого вхождения регулярного выражения, начиная с указанной начальной позиции и выполняя поиск только указанного числа символов.

Match(String, String, RegexOptions)

Выполняет поиск входной строки для первого вхождения указанного регулярного выражения с помощью указанных параметров сопоставления.

Match(String, String, RegexOptions, TimeSpan)

Выполняет поиск входной строки для первого вхождения указанного регулярного выражения, используя указанные параметры сопоставления и интервал времени ожидания.

Match(String)

Исходный код:
Regex.Match.cs
Исходный код:
Regex.Match.cs
Исходный код:
Regex.Match.cs

Выполняет поиск указанной входной строки для первого вхождения регулярного выражения, указанного в конструкторе Regex.

C#
public System.Text.RegularExpressions.Match Match (string input);

Параметры

input
String

Строка для поиска совпадения.

Возвращаемое значение

Объект, содержащий сведения о совпадении.

Исключения

input null.

Произошло время ожидания. Дополнительные сведения о времени ожидания см. в разделе "Примечания".

Примеры

В следующем примере отображаются совпадения шаблонов регулярного выражения в строке, а затем перечислены соответствующие группы, записи и позиции записи.

C#
using System;
using System.Text.RegularExpressions;

class Example
{
   static void Main()
   {
      string text = "One car red car blue car";
      string pat = @"(\w+)\s+(car)";

      // Instantiate the regular expression object.
      Regex r = new Regex(pat, RegexOptions.IgnoreCase);

      // Match the regular expression pattern against a text string.
      Match m = r.Match(text);
      int matchCount = 0;
      while (m.Success)
      {
         Console.WriteLine("Match"+ (++matchCount));
         for (int i = 1; i <= 2; i++)
         {
            Group g = m.Groups[i];
            Console.WriteLine("Group"+i+"='" + g + "'");
            CaptureCollection cc = g.Captures;
            for (int j = 0; j < cc.Count; j++)
            {
               Capture c = cc[j];
               System.Console.WriteLine("Capture"+j+"='" + c + "', Position="+c.Index);
            }
         }
         m = m.NextMatch();
      }
   }
}
// This example displays the following output:
//       Match1
//       Group1='One'
//       Capture0='One', Position=0
//       Group2='car'
//       Capture0='car', Position=4
//       Match2
//       Group1='red'
//       Capture0='red', Position=8
//       Group2='car'
//       Capture0='car', Position=12
//       Match3
//       Group1='blue'
//       Capture0='blue', Position=16
//       Group2='car'
//       Capture0='car', Position=21

Шаблон регулярного выражения (\w+)\s+(car) соответствует вхождениям слова "car" вместе с словом, предшествующим ему. Он интерпретируется, как показано в следующей таблице.

Рисунок Описание
(\w+) Соответствует одному или нескольким символам слова. Это первая группа захвата.
\s+ Соответствует одному или нескольким символам пробела.
(автомобиль) Соответствует литеральной строке "car". Это вторая группа захвата.

Комментарии

Метод Match(String) возвращает первую подстроку, которая соответствует шаблону регулярного выражения в входной строке. Сведения о элементах языка, используемых для создания шаблона регулярного выражения, см. в разделе языке регулярных выражений — краткий справочник.

Вы можете определить, найден ли шаблон регулярного выражения в входной строке, проверив значение возвращаемого свойства Match объекта Success. Если совпадение найдено, возвращаемое свойство Match объекта Value содержит подстроку из input, которая соответствует шаблону регулярного выражения. Если совпадение не найдено, его значение равно String.Empty.

Этот метод возвращает первую подстроку в input, которая соответствует шаблону регулярного выражения. Последующие совпадения можно получить путем многократного вызова возвращаемого метода Match объекта Match.NextMatch. Вы также можете получить все совпадения в одном вызове метода, вызвав метод Regex.Matches(String).

Исключение RegexMatchTimeoutException возникает, если время выполнения операции сопоставления превышает интервал времени ожидания, указанный конструктором Regex.Regex(String, RegexOptions, TimeSpan). Если при вызове конструктора не задан интервал времени ожидания, исключение создается, если операция превышает любое время ожидания, установленное для домена приложения, в котором создается объект Regex. Если время ожидания не определено в вызове конструктора Regex или в свойствах домена приложения или если значение времени ожидания Regex.InfiniteMatchTimeout, исключение не возникает.

См. также раздел

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

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

Match(String, Int32)

Исходный код:
Regex.Match.cs
Исходный код:
Regex.Match.cs
Исходный код:
Regex.Match.cs

Выполняет поиск входной строки для первого вхождения регулярного выражения, начиная с указанной начальной позиции в строке.

C#
public System.Text.RegularExpressions.Match Match (string input, int startat);

Параметры

input
String

Строка для поиска совпадения.

startat
Int32

Отсчитываемая от нуля позиция символа, с которой следует запустить поиск.

Возвращаемое значение

Объект, содержащий сведения о совпадении.

Исключения

input null.

startat меньше нуля или больше длины input.

Произошло время ожидания. Дополнительные сведения о времени ожидания см. в разделе "Примечания".

Комментарии

Дополнительные сведения об этом API см. в дополнительных примечаниях API для Regex.Match.

См. также раздел

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

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

Match(String, String)

Исходный код:
Regex.Match.cs
Исходный код:
Regex.Match.cs
Исходный код:
Regex.Match.cs

Выполняет поиск указанной входной строки для первого вхождения указанного регулярного выражения.

C#
public static System.Text.RegularExpressions.Match Match (string input, string pattern);

Параметры

input
String

Строка для поиска совпадения.

pattern
String

Шаблон регулярного выражения, соответствующий.

Возвращаемое значение

Объект, содержащий сведения о совпадении.

Исключения

Произошла ошибка синтаксического анализа регулярных выражений.

input или patternnull.

Произошло время ожидания. Дополнительные сведения о времени ожидания см. в разделе "Примечания".

Примеры

В следующем примере вызывается метод Match(String, String) для поиска первого слова, содержащего по крайней мере один символ z, а затем вызывает метод Match.NextMatch для поиска дополнительных совпадений.

C#
using System;
using System.Text.RegularExpressions;

namespace Examples
{
    public class Example
    {
        public static void Main()
        {
            string input = "ablaze beagle choral dozen elementary fanatic " +
                           "glaze hunger inept jazz kitchen lemon minus " +
                           "night optical pizza quiz restoration stamina " +
                           "train unrest vertical whiz xray yellow zealous";
            string pattern = @"\b\w*z+\w*\b";
            Match m = Regex.Match(input, pattern);
            while (m.Success)
            {
                Console.WriteLine("'{0}' found at position {1}", m.Value, m.Index);
                m = m.NextMatch();
            }
        }
    }
}

// The example displays the following output:
//    'ablaze' found at position 0
//    'dozen' found at position 21
//    'glaze' found at position 46
//    'jazz' found at position 65
//    'pizza' found at position 104
//    'quiz' found at position 110
//    'whiz' found at position 157
//    'zealous' found at position 174

Шаблон регулярного выражения \b\w*z+\w*\b интерпретируется, как показано в следующей таблице.

Рисунок Описание
\b Начните совпадение с границы слова.
\w* Соответствует нулю, одному или нескольким символам слова.
z+ Соответствует одному или нескольким вхождениям символа z.
\w* Соответствует нулю, одному или нескольким символам слова.
\b Завершите совпадение по границе слова.

Комментарии

Метод Match(String, String) возвращает первую подстроку, которая соответствует шаблону регулярного выражения в входной строке. Сведения о элементах языка, используемых для создания шаблона регулярного выражения, см. в разделе языке регулярных выражений — краткий справочник.

Статический метод Match(String, String) эквивалентен созданию объекта Regex с указанным шаблоном регулярного выражения и вызовом метода Match(String) экземпляра. В этом случае обработчик регулярных выражений кэширует шаблон регулярного выражения.

Параметр pattern состоит из элементов языка регулярных выражений, которые символично описывают строку для сопоставления. Дополнительные сведения о регулярных выражениях см. в регулярных выражений .NET и языке регулярных выражений — краткий справочник.

Вы можете определить, найден ли шаблон регулярного выражения в входной строке, проверив значение возвращаемого свойства Match объекта Success. Если совпадение найдено, возвращаемое свойство Match объекта Value содержит подстроку из input, которая соответствует шаблону регулярного выражения. Если совпадение не найдено, его значение равно String.Empty.

Этот метод возвращает первую подстроку в input, которая соответствует шаблону регулярного выражения. Последующие совпадения можно получить путем многократного вызова возвращаемого метода Match объекта Match.NextMatch. Вы также можете получить все совпадения в одном вызове метода, вызвав метод Regex.Matches(String, String).

Исключение RegexMatchTimeoutException возникает, если время выполнения операции сопоставления превышает интервал времени ожидания, указанный для домена приложения, в котором вызывается метод. Если время ожидания не определено в свойствах домена приложения или если значение времени ожидания Regex.InfiniteMatchTimeout, исключение не возникает.

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

Этот метод истекает после интервала, равного значению времени ожидания по умолчанию домена приложения, в котором он вызывается. Если значение времени ожидания не определено для домена приложения, используется значение InfiniteMatchTimeout, которое предотвращает истечение времени ожидания метода. Рекомендуемый статический метод для получения сопоставления шаблонов — Match(String, String), что позволяет задать интервал времени ожидания.

См. также раздел

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

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

Match(String, Int32, Int32)

Исходный код:
Regex.Match.cs
Исходный код:
Regex.Match.cs
Исходный код:
Regex.Match.cs

Выполняет поиск входной строки для первого вхождения регулярного выражения, начиная с указанной начальной позиции и выполняя поиск только указанного числа символов.

C#
public System.Text.RegularExpressions.Match Match (string input, int beginning, int length);

Параметры

input
String

Строка для поиска совпадения.

beginning
Int32

Отсчитываемое от нуля положение символов во входной строке, определяющее самую левую позицию для поиска.

length
Int32

Количество символов в подстроке, включаемых в поиск.

Возвращаемое значение

Объект, содержащий сведения о совпадении.

Исключения

input null.

beginning меньше нуля или больше длины input.

-или-

length меньше нуля или больше длины input.

-или-

beginning + length -1 определяет позицию, которая находится за пределами диапазона input.

Произошло время ожидания. Дополнительные сведения о времени ожидания см. в разделе "Примечания".

Комментарии

Метод Match(String, Int32, Int32) возвращает первую подстроку, которая соответствует шаблону регулярного выражения в части входной строки. Сведения о элементах языка, используемых для создания шаблона регулярного выражения, см. в разделе языке регулярных выражений — краткий справочник.

Шаблон регулярного выражения, для которого выполняется поиск Match(String, Int32, Int32) метода, определяется вызовом одного из конструкторов классов Regex. Дополнительные сведения об элементах, которые могут формировать шаблон регулярного выражения, см. в разделе язык регулярных выражений — краткий справочник.

Метод Match(String, Int32, Int32) выполняет поиск части input, определенной beginning и параметрами length для шаблона регулярного выражения. beginning всегда определяет индекс самого левого символа, включаемого в поиск, и length определяет максимальное количество символов для поиска. Вместе они определяют диапазон поиска. Поведение точно так же, как если бы input был фактически input.Substring(beginning, length), за исключением того, что индекс любого совпадения учитывается относительно начала input. Это означает, что любые утверждения привязки или утверждения нулевой ширины в начале или конце шаблона ведут себя так, как если бы нет input за пределами этого диапазона. Например, привязки ^, \Gи \A будут удовлетворены по beginning и $ и \z будут удовлетворены по beginning + length - 1.

Если поиск выполняется слева направо (по умолчанию), подсистема регулярных выражений выполняет поиск по символу по индексу beginning символу по индексу beginning + length - 1. Если обработчик регулярных выражений был создан с помощью параметра RegexOptions.RightToLeft, чтобы поиск проходил справа налево, подсистема регулярных выражений выполняет поиск от символа по индексу beginning + length - 1 к символу по индексу beginning.

Этот метод возвращает первое совпадение, которое он находит в этом диапазоне. Последующие совпадения можно получить путем многократного вызова возвращаемого метода Match объекта Match.NextMatch.

Вы можете определить, найден ли шаблон регулярного выражения в входной строке, проверив значение возвращаемого свойства Match объекта Success. Если совпадение найдено, возвращаемое свойство Match объекта Value содержит подстроку из input, которая соответствует шаблону регулярного выражения. Если совпадение не найдено, его значение равно String.Empty.

Исключение RegexMatchTimeoutException возникает, если время выполнения операции сопоставления превышает интервал времени ожидания, указанный конструктором Regex.Regex(String, RegexOptions, TimeSpan). Если при вызове конструктора не задано значение времени ожидания, исключение создается, если операция превышает любое время ожидания, установленное для домена приложения, в котором создается объект Regex. Если время ожидания не определено в вызове конструктора Regex или в свойствах домена приложения или если значение времени ожидания Regex.InfiniteMatchTimeout, исключение не возникает.

См. также раздел

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

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

Match(String, String, RegexOptions)

Исходный код:
Regex.Match.cs
Исходный код:
Regex.Match.cs
Исходный код:
Regex.Match.cs

Выполняет поиск входной строки для первого вхождения указанного регулярного выражения с помощью указанных параметров сопоставления.

C#
public static System.Text.RegularExpressions.Match Match (string input, string pattern, System.Text.RegularExpressions.RegexOptions options);

Параметры

input
String

Строка для поиска совпадения.

pattern
String

Шаблон регулярного выражения, соответствующий.

options
RegexOptions

Побитовое сочетание значений перечисления, которые предоставляют параметры сопоставления.

Возвращаемое значение

Объект, содержащий сведения о совпадении.

Исключения

Произошла ошибка синтаксического анализа регулярных выражений.

input или patternnull.

options не является допустимым побитовой комбинацией значений RegexOptions.

Произошло время ожидания. Дополнительные сведения о времени ожидания см. в разделе "Примечания".

Примеры

В следующем примере определяется регулярное выражение, которое соответствует словам, начинающимся с буквы "a". Он использует параметр RegexOptions.IgnoreCase, чтобы гарантировать, что регулярное выражение находит слова, начиная с верхнего регистра "a" и нижнего регистра "a".

C#
using System;
using System.Text.RegularExpressions;

namespace Examples
{
    public class Example2
    {
        public static void Main()
        {
            string pattern = @"\ba\w*\b";
            string input = "An extraordinary day dawns with each new day.";
            Match m = Regex.Match(input, pattern, RegexOptions.IgnoreCase);
            if (m.Success)
                Console.WriteLine("Found '{0}' at position {1}.", m.Value, m.Index);
        }
    }
}

// The example displays the following output:
//        Found 'An' at position 0.

Шаблон регулярного выражения \ba\w*\b интерпретируется, как показано в следующей таблице.

Рисунок Описание
\b Начните совпадение с границы слова.
a Соответствует символу "a".
\w* Соответствует нулю, одному или нескольким символам слова.
\b Завершите совпадение по границе слова.

Комментарии

Метод Match(String, String, RegexOptions) возвращает первую подстроку, которая соответствует шаблону регулярного выражения в входной строке. Сведения о элементах языка, используемых для создания шаблона регулярного выражения, см. в разделе языке регулярных выражений — краткий справочник.

Статический метод Match(String, String, RegexOptions) эквивалентен созданию объекта Regex с помощью конструктора Regex(String, RegexOptions) и вызова метода Match(String) экземпляра.

Параметр pattern состоит из элементов языка регулярных выражений, которые символично описывают строку для сопоставления. Дополнительные сведения о регулярных выражениях см. в регулярных выражений .NET и языке регулярных выражений — краткий справочник.

Вы можете определить, найден ли шаблон регулярного выражения в входной строке, проверив значение возвращаемого свойства Match объекта Success. Если совпадение найдено, возвращаемое свойство Match объекта Value содержит подстроку из input, которая соответствует шаблону регулярного выражения. Если совпадение не найдено, его значение равно String.Empty.

Этот метод возвращает первую подстроку, найденную в input, которая соответствует шаблону регулярного выражения. Последующие совпадения можно получить путем многократного вызова возвращаемого метода Match объекта NextMatch. Вы также можете получить все совпадения в одном вызове метода, вызвав метод Regex.Matches(String, String, RegexOptions).

Исключение RegexMatchTimeoutException возникает, если время выполнения операции сопоставления превышает интервал времени ожидания, указанный для домена приложения, в котором вызывается метод. Если время ожидания не определено в свойствах домена приложения или если значение времени ожидания Regex.InfiniteMatchTimeout, исключение не возникает.

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

Этот метод истекает после интервала, равного значению времени ожидания по умолчанию домена приложения, в котором он вызывается. Если значение времени ожидания не определено для домена приложения, используется значение InfiniteMatchTimeout, которое предотвращает истечение времени ожидания метода. Рекомендуемый статический метод для получения сопоставления шаблонов — Match(String, String), что позволяет задать интервал времени ожидания.

См. также раздел

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

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

Match(String, String, RegexOptions, TimeSpan)

Исходный код:
Regex.Match.cs
Исходный код:
Regex.Match.cs
Исходный код:
Regex.Match.cs

Выполняет поиск входной строки для первого вхождения указанного регулярного выражения, используя указанные параметры сопоставления и интервал времени ожидания.

C#
public static System.Text.RegularExpressions.Match Match (string input, string pattern, System.Text.RegularExpressions.RegexOptions options, TimeSpan matchTimeout);

Параметры

input
String

Строка для поиска совпадения.

pattern
String

Шаблон регулярного выражения, соответствующий.

options
RegexOptions

Побитовое сочетание значений перечисления, которые предоставляют параметры сопоставления.

matchTimeout
TimeSpan

Интервал времени ожидания или InfiniteMatchTimeout, чтобы указать, что метод не должен истекать.

Возвращаемое значение

Объект, содержащий сведения о совпадении.

Исключения

Произошла ошибка синтаксического анализа регулярных выражений.

input или patternnull.

options не является допустимым побитовой комбинацией значений RegexOptions.

-или-

matchTimeout отрицательно, ноль или больше примерно 24 дней.

Произошло время ожидания. Дополнительные сведения о времени ожидания см. в разделе "Примечания".

Комментарии

Метод Match(String, String, RegexOptions, TimeSpan) возвращает первую подстроку, которая соответствует шаблону регулярного выражения в входной строке. Сведения о элементах языка, используемых для создания шаблона регулярного выражения, см. в разделе языке регулярных выражений — краткий справочник.

Статический метод Match(String, String, RegexOptions, TimeSpan) эквивалентен созданию объекта Regex с помощью конструктора Regex(String, RegexOptions, TimeSpan) и вызова метода Match(String) экземпляра.

Параметр pattern состоит из элементов языка регулярных выражений, которые символично описывают строку для сопоставления. Дополнительные сведения о регулярных выражениях см. в регулярных выражений .NET и языке регулярных выражений — краткий справочник.

Вы можете определить, найден ли шаблон регулярного выражения в входной строке, проверив значение возвращаемого свойства Match объекта Success. Если совпадение найдено, возвращаемое свойство Match объекта Value содержит подстроку из input, которая соответствует шаблону регулярного выражения. Если совпадение не найдено, его значение равно String.Empty.

Этот метод возвращает первую подстроку, найденную в input, которая соответствует шаблону регулярного выражения. Последующие совпадения можно получить путем многократного вызова возвращаемого метода Match объекта NextMatch. Вы также можете получить все совпадения в одном вызове метода, вызвав метод Regex.Matches(String, String, RegexOptions).

Параметр matchTimeout указывает, как долго метод сопоставления шаблонов должен попытаться найти совпадение до истечения времени ожидания. Установка интервала времени ожидания запрещает регулярным выражениям, которые полагаются на чрезмерную обратную дорожку, чтобы перестать отвечать на запросы при обработке входных данных, содержащих близкие совпадения. Дополнительные сведения см. в рекомендациях по регулярных выражений и обратного отслеживания. Если совпадение не найдено в этом интервале времени, метод создает исключение RegexMatchTimeoutException. matchTimeout переопределяет любое значение времени ожидания по умолчанию, определенное для домена приложения, в котором выполняется метод.

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

Рекомендуется задать для параметра matchTimeout соответствующее значение, например две секунды. Если отключить время ожидания, указав InfiniteMatchTimeout, подсистема регулярных выражений обеспечивает немного лучшую производительность. Однако вы должны отключить тайм-аут только в следующих условиях:

  • Если входные данные, обработанные регулярным выражением, являются производными от известного и доверенного источника или состоят из статического текста. Это исключает текст, динамически введенный пользователями.

  • При тщательном тестировании шаблона регулярного выражения для эффективной обработки совпадений, не совпадающих и близких совпадений.

  • Если шаблон регулярного выражения не содержит языковых элементов, которые, как известно, вызывают чрезмерную обратную дорожку при обработке близкого совпадения.

См. также раздел

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

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0