我有以下字符串:
消息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 :(得分:3)
你必须使.+
懒惰:\[V\.(?<name>.+?)\]"
(注意问号)。第二种情况不起作用,因为默认情况下+
符号是贪婪的,并且它会尽可能多地与第二组中的第二个右方括号匹配。