2010-11-05 5 views
1

Я хочу написать Regex в C#, я пишу следующий код:Регулярное выражение в C#

Regex reg = new Regex("n>"); 
string str = "burn"; 
int x=0; 
if(reg.IsMatch(str)) 
    x++; 

Но, всегда х равна нулю. кто-нибудь знает почему?

Спасибо, Рейчел

+0

См ответ ниже, но вы можете сказать нам, что вы пытаетесь соответствовать? может быть, «n» в конце строки? – Jamiec

ответ

3

Но, всегда х равна нулю. кто-нибудь знает почему?

Поскольку регулярное выражение «n>» не соответствует строке «burn».

+1

Вау, это на 100% верно. Удивительно. ;-) – Tomalak

+0

Это был indulgant ответ. Я старался не быть слишком откровенным. : D – Jamiec

+2

Но это также не совсем ответ. Каждый вопрос «Почему это не работает?» на него можно ответить: «Потому что вы делаете это неправильно»; но никакая проблема не может быть * решена * таким образом. ;-) – Tomalak

5

Вы имеете в виду границу слова по >, но они выражаются \b в .NET регулярное выражение:

Regex reg = new Regex("n\\b"); // alternatively: Regex(@"n\b"); 
+0

Какая нотация регулярных выражений '' '? – splash

+2

@splash: Некоторые двигатели, такие как в vi/vim, используют заостренные скобки для обозначения границ слов. Это более выразительно, чем '\ b', потому что вы можете различать начало слова' <'и end-of-word'> '. – Tomalak

+0

@Tomalak: Спасибо за информацию! – splash

1

Вы смотрите на ту часть помощи. Эта помощь предназначена для диалоговых окон поиска и замены Visual Studio. Некоторые из синтаксиса из справки недействительны для использования в C# (или, скорее, не имеют такого же эффекта). Так что если у вас слово «записать» в вашем коде, и вы вошли в n> находят коробку и попытался поиска вы нашли п ожогу - видеть картину:

Screenshot

Вы, вероятно, нужно использовать n\b как отметил Томалак.

Смотреть подробнее из MSDN: Regular Expression Language Elements

+0

Хорошо, но что заменяет «<», которое использует, чтобы соответствовать только тогда, когда слово начинается с этой точки? – Rachel

+0

\ b, но вы должны использовать \ bb для записи - это проверит, является ли b началом слова. Что-то вроде: Regex reg = new Regex (@ "n \ b"); string str = "burn"; int x = 0; если (рег.IsMatch (str)) x ++; Regex reg2 = новое Regex (@ "\ bb"); if (reg2.IsMatch (str)) x ++; – Mihailo

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