2012-02-03 82 views

回答

2

使用“单词边界” /\b/,而不是一个空格,该字符串的结束,以及一个字/非单词边界匹配:

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

,或者根据什么字符可能是弦,只是用“单词字符” /\w/匹配的模式:

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

字边界比空间好,请给别人upvotes虽然,因为我的大脑放屁它的目的。

另外我不知道为什么你在原件中包含了一个?所以我离开了它,但我相信这不是必要的,因为*匹配0个或多个匹配项。

+0

@Blorgbeard:我几乎总是写'[^]'而不是' 。,所以我习惯那种逻辑。我修正它以匹配其他使用'\ b'的回答 – Guvante 2012-02-03 23:01:59

0

目前,您正则表达式需要捕获组后面的尾随空格。字符串“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]+

相关问题