2011-02-09 5 views
0

Regex를 사용하여 다음 문장에서 "dear"라는 단어가 사용되었습니다. 어떤 아이디어? 그래서이 예제에서 나는 4를 얻어야한다.문장에서 단어의 수를 찾으십시오.

안녕 DEAR 친구, 이것은 단어 dear의 반복을 포함하는 문자열이다; 당신이 사용 친애하는 단어의 수를 유지할 수 있다면 그래서 내 사랑, 그것은

+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 ] [...] [...] –

+1

그건 "가장 소중한" – RichardTheKiwi

+0

@driis를 할인하지 않습니다. Google에 너무 게으른 것이 었습니다. :) – imak

1

질문을 표현한 것처럼 정규식을 사용할 필요가 없습니다. 당신은 할 수있을 때 보통 정규식 대신 문자열 조작을 사용해야합니다. 이 경우 목표 (예 : dear)가 유효한 선택의 전체 클래스가 될 경우에만 필요합니다.

그런 경우가 아니라면, 대신 문자열 조작을 제안합니다. 하나의 가능성 :

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

내가 ToLower()를 사용하지 않고보다 효율적인 버전 오픈 해요,하지만 대부분의 목적을 위해 내가 그것에 대해 걱정하지 않을 것입니다. 그것은 여전히 ​​정규 표현식보다 빠를 것이다.

+0

정말, 내가 정규식을 사용 현명 더 나은 생각? – imak

+0

이 솔루션은 또한 "가장 소중한 것"으로 계산합니다. – digEmAll

+0

왜 -1입니까? "가장 소중한"사람을 없애기 위해서? 이 특정 문장에 대해서는 작동하지만 일반적인 경우에는 작동하지 않습니다. –

관련 문제