2011-11-19 58 views
0

我有以下字符串:正则表达式给出不同的结果为两个类似箱子

消息1 [V.Variable1]消息2 [F.Field1]消息3

为什么它很好地工作在EX1和不在EX2?

var ex1 = Regex.Matches(message, @"\[F\.(?<name>.+)\]"); 
// the result `{[F.Field1]}` .. as expected 


var ex2 = Regex.Matches(message, @"\[V\.(?<name>.+)\]"); 
// the result `{[V.Variable1] Message 2 [F.Field1]}` .. not as expected 

当我试图让组name的价值,它给了预期的结果在EX1是Field1但它没有返回值在EX2

任何想法?

+0

定义“效果很好”和“不”。目前还不清楚你期望的结果是什么。 – Oded

+0

当我试图获得组名'的值,它给出了ex1的预期结果,它是'Field1',但它在ex2中不返回任何内容 – Homam

+0

请编辑你的问题并用这些信息更新,而不是在评论,其他人可能忽略阅读它。 – Oded

回答

3

您必须使.+懒惰:\[V\.(?<name>.+?)\]"(注意问号)。第二种情况不起作用,因为默认情况下+符号是贪婪的,并且在您的情况下它将尽可能匹配到第二组中的第二个闭合方括号。

+0

很好...它的工作原理。 – Homam