包含end的字符之间的正则表达式

时间:2012-02-03 22:53:43

标签: c# regex

下面这个正则表达式捕获-aaaa和-cccc但不捕获-eee 我怎么能这样做?

keywords = "-aaa bbb -ccc -eee";
MatchCollection wordColNegEnd = Regex.Matches(keywords, @"-(.*?) ");

6 个答案:

答案 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]+