Регулярные выражения: поиск ДВУХ слов

Я использую очень простые регулярные выражения (только начал пользоваться), и, например, могу написать

        string src1 = "А в этой строке есть хоть одно слово?";
        string src2 = "А в этой?";
        if (Regex.IsMatch(src1, @"\w*слово\w*"))
            Console.WriteLine(src1);
        if (Regex.IsMatch(src2, @"\w*слово\w*"))
            Console.WriteLine(src2);

При этом напечатается первая из двух строк.

Усложним задачу.

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

Я пробую такой паттерн: \w*хоть\w*слово\w* - не получается.

Как это принято делать? желательно попроще...

Спасибо!


Ответы (2 шт):

Автор решения: S.H.

Нашел

Паттерн будет @"\w*(хоть.*слово)\w*"

Точка означает любой символ, а звездочка - что он может быть, может не быть, а если быть - то сколько угодно раз.

Почему при этом не срабатывает такой паттерн - @"\w*(хоть\w*слово)\w*" - я не понимаю...

→ Ссылка
Автор решения: aepot
static void Main(string[] args)
{
    string src1 = "А в этой строке есть хоть одно слово?";
    string src2 = "А в этой?";
    string pattern = @"хоть.+слово"; // 2 слова в определенном порядке, но не слитно
    Console.WriteLine(Regex.Matches(src1, pattern).Count);
    Console.WriteLine(Regex.Matches(src2, pattern).Count);
}

Вывод в консоль

1
0
→ Ссылка