.NET Regex分组:从组中排除字符串

时间:2014-03-12 00:49:28

标签: c# .net regex string regex-group

当我在.NET中使用正则表达式时

(.+) (c b|b)

我有一个像“somestring c b”的字符串我总是在第一组中获得“somestring c”而在第二组中获得“b”。

我希望在第一组中获得“somestring”,在第二组中获得“c b”。

有什么想法吗?

4 个答案:

答案 0 :(得分:2)

(.+?) (c b|b)

?是延迟限定符,表示匹配满足整体正则表达式所需的最小字符数。

Here is a grid of them and more details

答案 1 :(得分:1)

一个简单的解决方案是通过在加号后添加问号使第一组不情愿,如下所示:

(.+?) (c b|b)

如果没有它,它就不会贪婪并且尽可能多地匹配有效字符,在你的情况下,这意味着匹配第一组中的c。

答案 2 :(得分:0)

在括号内放置您想要匹配的内容,并在可接受的匹配项之间加上“或”符号。例如,这个RegEx应该可以解决这个问题:

(.+ b|b)

答案 3 :(得分:0)

按以下方式执行

(.+[^c]) (c b|b)

Demo