2012-03-16 3 views
-1

Как найти ниже шаблон будет или нет в данной строке с помощью Regex или любых других методов в C#Regex найти шаблон

NAME <some text here> RANK 

Пространств приезжающих после NAME до RANK и после того, как RANK следует учитывать , Текст между <> будет отличаться.

+0

Я все еще не уверен, что понимаю вопрос (в частности, первую строку). Зачем вам? Кроме того, ** что вы уже пробовали **? –

+0

Вам нужно также получить NAME и RANK? или вы хотите оставить эти слова вне результатов? – Gabber

+0

@BradChristie, я думаю, что первая строка означает, что он ищет метод 'Regex.IsMatch' – Snowbear

ответ

1

Использование:

var result = Regex.IsMatch(input, @"NAME\s.*?\sRANK\s{3}"); 
+1

+1 только для того, чтобы быть единственным, кто распознал неровный матч. –

+0

@BradChristie, спасибо. –

+0

Хотя «. *?» является неровным, он может совпадать с первым RANK из-за конечного требования '\ s {3}' 'NAME <некоторый текст здесь> RANK и NAME, наконец, RANK' в 'NAME <текст здесь> RANK и NAME, наконец, RANK '. Также, если 'NAME \ s \ sRANK', где \ s \ s является принудительным требованием. Я думаю, что вопросы пользователя неоднозначны. – sln

0

Просто используйте:

if(Regex.IsMatch(input, "NAME .* RANK")) 
{ } 
1

Посмотрите на http://www.regular-expressions.info/, это очень полезный ресурс для обучения Regex. В C# взгляните на пространство имен System.Text.RegularExpressions, в частности на класс System.Text.RegularExpressions.Regex.

0

Или просто сделать

string s = "NAME sdhfg hgfjh sjfg gf RANK".Replace("NAME ","").Replace(" RANK",""); 
1

Из требований, они могут работать (я до сих пор не уверен, что некоторые из boundry условий в описании).

NAME(?=[ ]).+?(?<=[ ])RANK(?=[ ])

или

(?<=^|[ ])NAME(?=[ ]).+?(?<=[ ])RANK(?=[ ]|$)

Точка doesen't включают в себя символы новой строки. Его можно заменить на [\ s \ S], или вы можете просто добавить (? S) в начале, чтобы включить их.

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