2012-02-03 7 views

답변

2

문자열의 끝뿐만 아니라 단어/비 단어 경계와 일치하는 공간 대신 ​​"단어 경계"/\b/를 사용하여 현재 당신의 정규식 캡처 그룹 뒤에 후행 공간이 필요

Regex.Matches(keywords, @"-(\w+)"); 
1
MatchCollection worldColNegEnd = Regex.Matches(keywords, @"-(.*?)\b" 

단어 경계 공간보다 낫다, 나는 뇌가 그것의 목적을 방귀를 뀌어 때문에 다른 사람이하지만 upvotes주세요.

?도 원본에 포함 시켰는지 잘 모르겠으나, *은 0 개 이상 일치와 일치하므로 필요하지 않습니다. 문자에 어떻게 될 것인가에 따라,

Regex.Matches(keywords, @"-(.*?)\b"); 

나 :

+0

@Blorgbeard : 나는 거의 항상'쓰기 [^]'대신'를 그래서 그 논리에 익숙하다. 나는 '\ b'를 사용하여 다른 사람의 응답에 맞추어 그것을 고쳤습니다. – Guvante

0

: 문자열, 그냥 패턴과 일치하는 "단어 문자"/\w/를 사용합니다. 문자열 "aaa"와 "ccc"는 이것을 가지고 있지만 "eee"는 그렇지 않습니다.

대신 대시 이후에 발생 어떤 문자를 일치의, 기로 인해 공백이 아닌 문자를 일치 시도 :

@"-(\S*?)" 
1

사용 당신은 정확하게 당신이 무엇

MatchCollection wordColNegEnd = Regex.Matches(keywords, @"-(.+?)\b"); 
0
keywords = "-aaa bbb -ccc -eee"; 
MatchCollection wordColNegEnd = Regex.Matches(keywords, @"-\w+"); 
0

를 지정하지 않은 여기 일치 시키려고.

그러나 나는 그것이 바로, 당신이 -

사용하여이 정규식 시작하는 알파 문자열과 일치 할 이해하는 경우 : -[a-z]+