2013-10-14 5 views
0

Я пытаюсь совместить целое слово againt строки. У меня возникла проблема, когда я хотел ограничивать матчи только целыми словами. Когда я пытаюсь изучить это, я обнаружил, что у меня была большая проблема с моим пониманием.Regex.IsMatch пояснение

Следующая программа не находит матч, я ожидал, что это:

class Program 
{ 
    static void Main(string[] args) 
    { 
     if (Regex.IsMatch("t1", "\bt1\b")) 
     { 
      return; // I was expecting this to be hit but it is not 
     } 
    } 
} 

Может кто-нибудь указать на то, что я сделал не так?

ответ

4

Вам нужно бежать \b

Используйте \\, чтобы избежать его или просто использовать @ дословно.

if (Regex.IsMatch("t1", @"\bt1\b")) 
{ 
    return; //This works as expected 
} 

Вот Demo

1

Ваше регулярное выражение работает. Вам просто нужно заменить каждый «\» символ «\\» или добавить @ перед тем регулярное выражение шаблон сказать compiller, что ваша строка является буквальным (@ «вашего регулярного выражения»).

1

Проблема в том, что вы забыли добавить символ @ перед символом «\ bt1 \ b» или вы также можете использовать «\\ bt1 \\ b» в коде.
Так что ваш код должен быть

Regex.IsMatch("t1", @"\bt1\b"); 

или

Regex.IsMatch("t1", "\\bt1\\b"); 

Побег последовательности неуместны.

Смежные вопросы