2012-02-03 100 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]+

相關問題