包含结束符在内的字符之间的正则表达式

本文关键字:字符 正则表达式 之间 结束 包含 | 更新日期: 2023-09-27 18:22:21

下面的正则表达式捕获-aaa和-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"

单词边界比空格好,不过请给其他人投票,因为我的大脑放屁了它的目的。

此外,我不知道为什么你在原件中包含?,所以我留下了它,但我认为这没有必要,因为*匹配0个或多个匹配。

使用

MatchCollection wordColNegEnd = Regex.Matches(keywords, @"-(.+?)'b");

当前,正则表达式需要在捕获组后面留一个尾随空格。字符串"aaa"answers"ccc"有这个,但"eee"没有。

与其匹配短划线后出现的任何字符,不如尝试匹配非空格的字符:

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

您还没有在这里指定要匹配的内容。

但如果我理解正确的话,你想匹配任何以- 开头的阿尔法字符串

使用此RegEx:-[a-z]+