2011-02-09 2 views
0

Я хочу найти число раз слово «дорогой» используется в следующем предложении, используя Regex. Есть идеи? так что в этом примере я должен получить 4найти количество слов в предложении

Здравствуйте, ДОРОГОЙ Друг. Это строка, содержащая повторяющиеся слова. так что мой дорогой, если вы можете вести учет слова дорогому б, это будет большим

+1

5? Ты уверен? Не 4? –

+1

Я тоже считаю 4. – driis

+1

Вы правы :( – imak

ответ

5
Regex reg = new Regex("\\bdear\\b", RegexOptions.IgnoreCase); 
int count = reg.Matches(input).Count; 

Или я что-то отсутствует в вашем вопросе?

+0

Я почти смущен, чтобы сказать, что, хотя я решил, что будет какой-то простой вариант, первое, что я пробовал, было «[Dd] [Ee] [Aa ] [Rr] "... –

+1

Это не относится к« дорогим » – RichardTheKiwi

+0

@driis вам ничего не хватает, было просто слишком лениво для google it :) – imak

1

Как вы сформулировали вопрос, для этого вам не нужно использовать регулярное выражение. Обычно вы должны использовать строковое манипулирование вместо регулярного выражения; в этом случае вам понадобится только его, если ваша цель (dear в вашем примере) станет целым классом действительных вариантов.

Если это не так, я предлагаю вместо этого манипулировать строкой. Одним из возможных вариантов:

int count = source.ToLower().Split("dear").Length - 1; 

Я открыт для более эффективной версии без использования ToLower(), но в большинстве случаев я бы не беспокоиться об этом. Он должен быть быстрее, чем регулярное выражение.

+0

На самом деле, я думал, что использование регулярных выражений - это лучшая производительность? – imak

+0

Это решение будет считаться также «самым дорогим» ' – digEmAll

+0

Почему -1? Чтобы устранить «самых дорогих»? Это будет работать для этого конкретного предложения, но не в общем случае. –

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