這個正則表達式捕獲-aaaa和-cccc但不是-eee 我該怎麼做?字符之間的正則表達式包括結尾
keywords = "-aaa bbb -ccc -eee";
MatchCollection wordColNegEnd = Regex.Matches(keywords, @"-(.*?) ");
這個正則表達式捕獲-aaaa和-cccc但不是-eee 我該怎麼做?字符之間的正則表達式包括結尾
keywords = "-aaa bbb -ccc -eee";
MatchCollection wordColNegEnd = Regex.Matches(keywords, @"-(.*?) ");
使用「單詞邊界」 /\b/
,而不是一個空格,該字符串的結束,以及一個字/非單詞邊界匹配:
Regex.Matches(keywords, @"-(.*?)\b");
,或者根據什麼字符可能是弦,只是用「單詞字符」 /\w/
匹配的模式:
Regex.Matches(keywords, @"-(\w+)");
MatchCollection worldColNegEnd = Regex.Matches(keywords, @"-(.*?)\b"
字邊界比空間好,請給別人upvotes雖然,因爲我的大腦放屁它的目的。
另外我不知道爲什麼你在原件中包含了一個?
所以我離開了它,但我相信這不是必要的,因爲*
匹配0個或多個匹配項。
目前,您正則表達式需要捕獲組後面的尾隨空格。字符串「aaa」和「ccc」有這個,但是「eee」沒有。
相反匹配破折號後發生的字符,嘗試匹配非空格字符:
@"-(\S*?)"
使用
MatchCollection wordColNegEnd = Regex.Matches(keywords, @"-(.+?)\b");
keywords = "-aaa bbb -ccc -eee";
MatchCollection wordColNegEnd = Regex.Matches(keywords, @"-\w+");
您還沒有指定究竟你是什麼試圖在這裏匹配。
但如果我的理解是正確的,你想匹配與-
開始使用這個表達式的任何字母串:-[a-z]+
@Blorgbeard:我幾乎總是寫'[^]'而不是' 。,所以我習慣那種邏輯。我修正它以匹配其他使用'\ b'的回答 – Guvante 2012-02-03 23:01:59