一段字符串如下
"uesr1":{
"li":{"name"="lili",***}
"li1":{"name"="lili",***}
}这段字符串又位于同样格式的大字符串中,我现在想正则 匹配出"uesr1":{***}这些内容。
内容中也有很多大括号。如何能够正确匹配对称的结尾。
"uesr1":{
"li":{"name"="lili",***}
"li1":{"name"="lili",***}
}这段字符串又位于同样格式的大字符串中,我现在想正则 匹配出"uesr1":{***}这些内容。
内容中也有很多大括号。如何能够正确匹配对称的结尾。
这里是固定的?否则如何匹分"uesr1"与"li"等情况
""uesr1"":{
""li"":{""name""=""lili"",***}
""li1"":{""name""=""lili"",***}
}
another line.";
MatchCollection mc = Regex.Matches(test, @"(?i)""uesr1"":\{(?>(?<o>)\{|(?<-o>)\}|[^{}])*(?(o)(?!))\}");
foreach (Match m in mc)
{
richTextBox2.Text += m.Value + "\n";
}
"uesr1"
还是
"uesr1":
还是什么?根据动态输入的key取得嵌套的内容?
//textBox1.Text中就是那个key,注意Regex.Escape(key)不能少
string test = @"a line
""uesr1"":{
""li"":{""name""=""lili"",***}
""li1"":{""name""=""lili"",***}
}
another line.";
Regex reg = new Regex(@"(?i)" + Regex.Escape(textBox1.Text) + @"\{(?>(?<o>)\{|(?<-o>)\}|[^{}])*(?(o)(?!))\}");
MatchCollection mc = reg.Matches(test);
foreach (Match m in mc)
{
richTextBox2.Text += m.Value + "\n";
}
""uesr1"":{
""li"":{""name""=""lili"",***}
""li1"":{""name""=""lili"",***}
}
another line."; string s = myConfigString.TextFile2.ToString(); Regex reg = new Regex(@"(?i)" + Regex.Escape("\"uesr1\"") + @"{(?>(?<o>)\{|(?<-o>)\}|[^{}])*(?(o)(?!))}");
MatchCollection mc = reg.Matches(test);
foreach (Match m in mc)
{
myDoShowMsg(m.Value + "\n");
}
[code=C#]Regex reg = new Regex(@"(?i)" + Regex.Escape("\"uesr1\":") + @"\{(?>(?<o>)\{|(?<-o>)\}|[^{}])*(?(o)(?!))\}");
//如里它属于固定的匹配部分,那就放在后面
Regex reg = new Regex(@"(?i)" + Regex.Escape("\"uesr1\"") + @":\{(?>(?<o>)\{|(?<-o>)\}|[^{}])*(?(o)(?!))\}");[/code]还有“{”和“}”在大多数情况下不转义也没关系,但最好还是进行转义处理
Regex reg = new Regex(@"(?i)" + Regex.Escape("\"uesr1\":") + @"\{(?>(?<o>)\{|(?<-o>)\}|[^{}])*(?(o)(?!))\}");
//如里它属于固定的匹配部分,那就放在后面
Regex reg = new Regex(@"(?i)" + Regex.Escape("\"uesr1\"") + @":\{(?>(?<o>)\{|(?<-o>)\}|[^{}])*(?(o)(?!))\}");