2013-04-13 2 views
1

Может кто-то помочь мне делать следующий поиск, используя Regex в C#Regex найти N (указывается номер) слова до и после определенного слова

мне нужно регулярное выражение, которое даст мне определенное количество слов до и после определенного слово, которое будет включать в себя слово поиска. Обратите внимание, что я хочу указать, сколько слов до и после того, как я захочу. Если слово поиска находится в начале текста, тогда оно возвращает только N количество слов после слова поиска и наоборот, если поисковое слово находится в конце текста. Также поиск должен содержать несколько совпадений из текста, который я могу обработать.

Например, Я хочу получить слова «2» вокруг слова поиска «пример», чтобы возвратить несколько результатов в соответствии с многострочным текстом.

Пример примера в этом уроке - пример резюме, который мы используем в качестве примера. Сколько слов в этом примере? Нам нужны только первые несколько примеров ».

Возвращает следующие результаты

"например, один в" (обратите внимание, как первый поиск не имеет первые 2 слова)

"пример резюме, что"

«в качестве примера Сколько "

" в данном примере? Мы только "

Спасибо.

+1

Если у вас есть соответствующий код, я предлагаю вам также опубликовать его, пожалуйста. – Brian

ответ

3

дал ваш пример следующие регулярное выражение будет работать

^example \w+ \w+|\w+ \w+ example[\.\?,]? \w+ \w+ 

Пример С реализации #

string example = @"example one in this lesson is an example summary that we are using as an example. How many words are in this example? We only want the first few examples."; 
string pattern = @"^example \w+ \w+|\w+ \w+ example[\.\?,]? \w+ \w+"; 

foreach (Match m in Regex.Matches(example, pattern)) 
{ 
    Response.Write(m.Value + "<br/>"); 
} 

использовать регулярное выражение отладчик (например, debuggex) или регулярное выражение тестер (например, regexpal), чтобы сделать любую точную настройку выше, когда вы пробуете это на дополнительных тестовых примерах.

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