下面这个正则表达式捕获-aaaa和-cccc但不捕获-eee 我怎么能这样做?
keywords = "-aaa bbb -ccc -eee";
MatchCollection wordColNegEnd = Regex.Matches(keywords, @"-(.*?) ");
答案 0 :(得分:2)
使用“单词边界”/\b/
代替空格,该空格与字符串的结尾以及单词/非单词边界匹配:
Regex.Matches(keywords, @"-(.*?)\b");
或者,根据字符串中可能包含的字符,只需使用“单词字符”/\w/
来匹配模式:
Regex.Matches(keywords, @"-(\w+)");
答案 1 :(得分:1)
MatchCollection worldColNegEnd = Regex.Matches(keywords, @"-(.*?)\b"
字边界比空间更好,但请给别人赞成,因为我的大脑放弃了它的目的。
此外,我不知道为什么你在原版中添加了?
,所以我离开了它,但我认为没有必要,因为*
匹配0或更多匹配。
答案 2 :(得分:1)
使用
MatchCollection wordColNegEnd = Regex.Matches(keywords, @"-(.+?)\b");
答案 3 :(得分:0)
目前,您的正则表达式需要捕获组后面的尾随空格。字符串“aaa”和“ccc”有此,但“eee”没有。
不要匹配短划线后发生的任何字符,而是尝试匹配非空格字符:
@"-(\S*?)"
答案 4 :(得分:0)
keywords = "-aaa bbb -ccc -eee";
MatchCollection wordColNegEnd = Regex.Matches(keywords, @"-\w+");
答案 5 :(得分:0)
您尚未指定您要在此处确切匹配的内容。
但如果我理解正确,您希望匹配任何以-
使用此RegEx:-[a-z]+