字符之间的正则表达式包括结尾
问题描述:
这个正则表达式捕获-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