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


Действия с регулярными выражениями

Данный раздел относится к версии Windows Workflow Foundation 4.

Этот образец демонстрирует способ создания набора действий, которые представляют функциональные возможности регулярного выражения пространства имен System.Text.RegularExpressions. Эти пользовательские действия можно использовать в приложении рабочего процесса. Регулярные выражения Дополнительные сведения описаны в пространстве имен N:System.Text.RegularExpressions.

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

Действие Описание

IsMatch

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

Matches

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

Replace

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

IsMatch

Пользовательское действие IsMatch возвращает true, если свойство строки Input совпадает с регулярным выражением, указанным в свойстве Pattern. Действие является производным от CodeActivity, и в методе Execute вызывается метод IsMatch.

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

Свойство или возвращаемое значение Описание

Шаблон (обязательно)

Регулярное выражение, по которому выполняется поиск.

Входные данные (обязательно)

Входная строка для поиска.

RegexOptions

Значения перечисления RegexOptions, объединенные битовой операцией ИЛИ.

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

true, если входная строка совпадает с указанным шаблоном. В противном случае false.

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

new IsMatch
{
    Pattern = new InArgument<string>( @"^-?\d+(\.\d{2})?$"),
    Input = "20.00",
};

Соответствия

Пользовательское действие Matches выполняет поиск всех вхождений регулярного выражения во входной строке и возвращает все найденные совпадения. Действие является производным от CodeActivity, и в методе Execute вызывается метод Matches.

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

Свойство или возвращаемое значение Описание

Шаблон (обязательно)

Регулярное выражение, по которому выполняется поиск.

Входные данные (обязательно)

Входная строка для поиска.

RegexOptions

Значения перечисления RegexOptions, объединенные битовой операцией ИЛИ.

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

Объект MatchCollection, содержащий коллекцию успешных совпадений.

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

new Matches
{
    Pattern = @"\b(?<word>\w+)\s+(\k<word>)\b",
    Input = "The quick brown fox  fox jumped over over the lazy dog dog.",
};

Заменить

Пользовательское действие Replace выполняет поиск во входной строке и заменяет в этой строке все строки, совпадающие с указанным регулярным выражением. Действие является производным от CodeActivity, и в методе Execute вызывается метод Replace.

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

Свойство или возвращаемое значение Описание

Шаблон (обязательно)

Регулярное выражение, по которому выполняется поиск.

Входные данные (обязательно)

Входная строка для поиска.

Замена

Строка замены.

Если задано свойство Replacement, то свойство MatchEvaluator не учитывается. Необходимо задать либо свойство Replacement, либо свойство MatchEvaluator.

MatchEvaluator

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

Если задано свойство Replacement, то свойство MatchEvaluator не учитывается. Необходимо задать либо свойство Replacement, либо свойство MatchEvaluator.

RegexOptions

Значения перечисления RegexOptions, объединенные битовой операцией ИЛИ.

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

Объект MatchCollection, содержащий коллекцию успешных совпадений.

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

// Using the replacement string.
new Replace
{
    Pattern = @"\bWorld\b",
    Input = "Hello World! This is a wonderful World",
    Replacement = "Universe"
};

// Using a match evaluator.
new Replace
{
    Pattern = new InArgument<string>(pattern),
    Input = new InArgument<string>(input),
    MatchEvaluator = new MatchEvaluator(CapText)                
};

Использование этого образца

  1. Откройте файл решения RegexActivities.sln в среде Visual Studio 2010.

  2. Чтобы построить решение, нажмите клавишу F6.

  3. Чтобы запустить решение, нажмите клавиши CTRL+F5.

Dd797587.Important(ru-ru,VS.100).gif Примечание
Образцы уже могут быть установлены на компьютере. Перед продолжением проверьте следующий каталог (по умолчанию).

<диск_установки>:\WF_WCF_Samples

Если этот каталог не существует, перейдите на страницу Образцы Windows Communication Foundation (WCF) и Windows Workflow Foundation (WF) для .NET Framework 4, чтобы загрузить все образцы Windows Communication Foundation (WCF) и WF. Этот образец расположен в следующем каталоге.

<диск_установки>:\WF_WCF_Samples\WF\Scenario\ActivityLibrary\Regex