регулярний вираз і рядок

Розглянемо наступне:

string keywords = "(load|save|close)";
Regex x = new Regex(@"\b"+keywords+"\b");

Я не отримую матчів. Однак, якщо я це зробив

Regex x = new Regex(@"\b(load|save|close)\b");

Я отримую матчі. Чому перший не працює, і як я можу це виправити? В принципі, я хочу, щоб ключові слова були налаштовувані, тому я розмістив їх у рядку.

0
Я бачу. Я пропустив щось дуже очевидне.
додано Автор rayanisran, джерело

3 Відповіді

Останній \ b у першому фрагменті коду потребує вказівника стенограми рядків ( @ ) перед ним, а також окремий екземпляр рядка.

string keywords = "(load|save|close)"; 
Regex x = new Regex(@"\b"[email protected]"\b");  
8
додано
+1 для швидких очей :)
додано Автор FailedDev, джерело

Вам не вистачає іншого специфікатора стенографічних рядків ( @ , прикріплений до останнього \ b ):

Regex x = new Regex(@"\b" + keywords + @"\b");
3
додано
Regex x = new Regex(@"\b"[email protected]"\b");

You forgot additional @ before second "\b"

2
додано
var chat = new Chat();
var chat = new Chat();
642 учасників

Обсуждение вопросов по C# / .NET / .NET Core / .NET Standard / Azure Сообщества-организаторы: — @itkpi — @dncuug