Первое, что приходит на ум, это использовать подобный паттерн
string pattern = ((red.*green)|(green.*red));
Ну, а что делать, если надо проверить строку с десятком совпадений?
Все просто - можно использовать следующий паттерн:
string pattern = (?=.*green)(?=.*red); string[] test = new string[] { "green\n bbbbb red aaaa", "red\n bbbbb green aaaa", "\n bbbbb green aaaa" }; foreach (var item in test) { bool isMatch = Regex.IsMatch(item, pattern, RegexOptions.IgnoreCase | RegexOptions.Singleline); Console.WriteLine("Строка: {0} isMatch: {1}",item,isMatch ); } //Результат: Строка: "green\n bbbbb red aaaa" isMatch: true Строка: "red\n bbbbb green aaaa" isMatch: true Строка: "\n bbbbb green aaaa" isMatch: false
В случае, если надо проверить строку, содержащую набор определенных слов, но при этом в строке не должно быть некоторых других слов, можно использовать следующий паттерн.
Например нам нужно найти текст содержащий слова green и red, но в котором нет слов yellow или white.
string pattern = (?(^((?!yellow)(?!white).)*$)(?=.*green)(?=.*red)|(^((?!yellow)(?!white).)*$));
Статья на википедии
Онлайн тест регулярных выражений
Комментариев нет:
Отправить комментарий