正则表达式取值

a616606433 2019-05-16 11:45:45
[2,{"0":{"1":{"9.934":[0],"9.937":[1,4,5,7],"9.938":[2,3,8,9],"9.936":[6]},"6":{"1.983":-1},"11":{"1.983":-1},"2":{"9.934":[0],"9.937":[1,4,5,7],"9.938":[2,3,8,9],"9.936":[6]},"7":{"1.983":-1},"12":{"1.983":-1},"3":{"9.934":[0],"9.937":[1,4,5,7],"9.938":[2,3,8,9],"9.936":[6]},"8":{"1.983":-1},"13":{"1.983":-1},"4":{"9.934":[0],"9.937":[1,4,5,7],"9.938":[2,3,8,9],"9.936":[6]},"9":{"1.983":-1},"14":{"1.983":-1},"5":{"9.934":[0],"9.937":[1,4,5,7],"9.938":[2,3,8,9],"9.936":[6]},"10":{"1.983":-1},"15":{"1.983":-1}},"2":0}]

通过正则匹配取值 取值后结果如下
"1":{"9.934":[0],"9.937":[1,4,5,7],"9.938":[2,3,8,9],"9.936":[6]}
"6":{"1.983":-1},"11":{"1.983":-1}
"2":{"9.934":[0],"9.937":[1,4,5,7],"9.938":[2,3,8,9],"9.936":[6]}
"7":{"1.983":-1}
"12":{"1.983":-1}
"3":{"9.934":[0],"9.937":[1,4,5,7],"9.938":[2,3,8,9],"9.936":[6]}
"8":{"1.983":-1}
"13":{"1.983":-1}
"4":{"9.934":[0],"9.937":[1,4,5,7],"9.938":[2,3,8,9],"9.936":[6]}
"9":{"1.983":-1}
"14":{"1.983":-1}
"5":{"9.934":[0],"9.937":[1,4,5,7],"9.938":[2,3,8,9],"9.936":[6]}
"10":{"1.983":-1},"15":{"1.983":-1}
...全文
205 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
a616606433 2019-05-16
  • 打赏
  • 举报
回复
不行 取不到
秋的红果实 2019-05-16
  • 打赏
  • 举报
回复

string input = "[2,{0:{1:{9.934:[0],9.937:[1,4,5,7],9.938:[2,3,8,9],9.936:[6]},6:{1.983:-1},11:{1.983:-1},2:{9.934:[0],9.937:[1,4,5,7],9.938:[2,3,8,9],9.936:[6]},7:{1.983:-1},12:{1.983:-1},3:{9.934:[0],9.937:[1,4,5,7],9.938:[2,3,8,9],9.936:[6]},8:{1.983:-1},13:{1.983:-1},4:{9.934:[0],9.937:[1,4,5,7],9.938:[2,3,8,9],9.936:[6]},9:{1.983:-1},14:{1.983:-1},5:{9.934:[0],9.937:[1,4,5,7],9.938:[2,3,8,9],9.936:[6]},10:{1.983:-1},15:{1.983:-1}},2:0}]";

MatchCollection collection = Regex.Matches(input, @"\d+:{.+?}");
foreach (Match m in collection)
{
    MessageBox.Show(m.Value.ToString());

}

就你给出的样本,可以这样处理 "10":{"1.983":-1},"15":{"1.983":-1}应该是 "10":{"1.983":-1} "15":{"1.983":-1} 吧
秋的红果实 2019-05-16
  • 打赏
  • 举报
回复
把匹配表达式换成:@"{[^{}]+?}" 估计差不多,你自己测试下
a616606433 2019-05-16
  • 打赏
  • 举报
回复
{"0":{"1":{"9.934":[0],"9.937":[1,4,5,7],"9.938":[2,3,8,9],"9.936":[6]} 红色部分是不要得
秋的红果实 2019-05-16
  • 打赏
  • 举报
回复
那就对的,就是那个写法,我把结果装载到winForm里的listbox中

string input = "[2,{0:{1:{9.934:[0],9.937:[1,4,5,7],9.938:[2,3,8,9],9.936:[6]},6:{1.983:-1},11:{1.983:-1},2:{9.934:[0],9.937:[1,4,5,7],9.938:[2,3,8,9],9.936:[6]},7:{1.983:-1},12:{1.983:-1},3:{9.934:[0],9.937:[1,4,5,7],9.938:[2,3,8,9],9.936:[6]},8:{1.983:-1},13:{1.983:-1},4:{9.934:[0],9.937:[1,4,5,7],9.938:[2,3,8,9],9.936:[6]},9:{1.983:-1},14:{1.983:-1},5:{9.934:[0],9.937:[1,4,5,7],9.938:[2,3,8,9],9.936:[6]},10:{1.983:-1},15:{1.983:-1}},2:0}]";

MatchCollection collection = Regex.Matches(input, @"\d+:{.+?}");
foreach (Match m in collection)
{
    listBox1.Items.Add(m.Value.ToString() + "\r\n");

}

a616606433 2019-05-16
  • 打赏
  • 举报
回复
对 就是这个数据 但是你刚才那个正则没匹配上
  • 打赏
  • 举报
回复
这看起来是Json,可以反序列化后获取
秋的红果实 2019-05-16
  • 打赏
  • 举报
回复
不是这个吗? 请说明白到底需要什么数据?

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧