C# 正则表达式匹配的值不正确
我用的是C#。我需要正则表达式来检查这样的文本:C# 正则表达式匹配的值不正确,c#,regex,C#,Regex,我用的是C#。我需要正则表达式来检查这样的文本: abc {val2:123} lorem ipsum {val1:234} 我需要匹配所有的{x:y}。我尝试过regex{.*}但它匹配整个值-“{val2:123}lorem ipsum{val1:234}”。当然不好玩 如何适当地更改我的正则表达式 string input=“abc{val2:123}lorem ipsum{val1:234}”; string input = "abc {val2:123} lorem ipsum {v
abc {val2:123} lorem ipsum {val1:234}
我需要匹配所有的{x:y}。我尝试过regex{.*}但它匹配整个值-“{val2:123}lorem ipsum{val1:234}”。当然不好玩
如何适当地更改我的正则表达式 string input=“abc{val2:123}lorem ipsum{val1:234}”;
string input = "abc {val2:123} lorem ipsum {val1:234}";
var dict = Regex.Matches(input, @"\{(.+?):(.+?)\}").Cast<Match>()
.ToDictionary(m => m.Groups[1].Value, m => m.Groups[2].Value);
var dict=Regex.Matches(输入,@“\{(.+?):(.+?)\}”).Cast()
.ToDictionary(m=>m.Groups[1]。值,m=>m.Groups[2]。值);
string input=“abc{val2:123}lorem ipsum{val1:234}”;
var dict=Regex.Matches(输入,@“\{(.+?):(.+?)\}”).Cast()
.ToDictionary(m=>m.Groups[1]。值,m=>m.Groups[2]。值);
它匹配一个{
,后跟零个或多个非}
字符,然后匹配一个文本}
,将匹配的任何字符放入组1
然后,您可以在冒号符号上拆分捕获的组:
,以获得密钥和值对
它匹配一个{
,后跟零个或多个非}
字符,然后匹配一个文本}
,将匹配的任何字符放入组1
然后,您可以在冒号符号上拆分捕获的组:
,以获得密钥和值对
{(?\w+):(?\w+)}
以上应该是有效的。。。我已经包含了命名组,以便更容易地选择值。{(?\w+):(?\w+)}
以上应该是有效的。。。我已经加入了命名组,以便更容易地选择值。这是因为c sharp正则表达式在默认情况下是贪婪的。只需使用{.*?} 下面的代码将完全满足您的要求。这就是使正则表达式不灵活的问号
string s = "abc {val2:123} lorem ipsum {val1:234};";
MatchCollection nonGreedyMatches = Regex.Matches(s, @"{.*?}");
这是因为c sharp正则表达式在默认情况下是贪婪的。只需使用{.*?} 下面的代码将完全满足您的要求。这就是使正则表达式不灵活的问号
string s = "abc {val2:123} lorem ipsum {val1:234};";
MatchCollection nonGreedyMatches = Regex.Matches(s, @"{.*?}");
+1为正确答案。尽管如此,解释什么是懒惰/非贪婪匹配还是有用的。正确答案为+1。不过,解释什么是懒惰/非贪婪匹配会很有用。@AndreiMikhalevich不客气,谢谢你喜欢这个变体:)@AndreiMikhalevich不客气,谢谢你喜欢这个变体:)
string s = "abc {val2:123} lorem ipsum {val1:234};";
MatchCollection nonGreedyMatches = Regex.Matches(s, @"{.*?}");