我需要从腐败的Json中读取一些无法解析为对象的数据。我需要使用正则表达式才能得到这个。我有最后一件事给我带来了麻烦。这是我正在使用的Json的片段。
price: "1129.0",
quantity: "0",
rating: "4.9",
ratingCount: "127",
我想提取4.9
。为此,我有以下正则表达式。
(?<=rating: \")([\s\S]*?)(?=\")
我遇到的问题是Json有时会丢失冒号之间的空格。
price:"1129.0",
quantity:"0",
rating:"4.9",
ratingCount:"127",
我无法修改源内容,因为需要在某些节点中保留空白。我试图超级具体,并使用以下
(?<=rating: \")([\S*\s*][0-9.](.*?))(?=\")
这有效,但又一次,如果我有json缺少空格,它不起作用。如果我删除规则本身中的空格,它也不起作用。我需要能够使用一个不关心开始和结束块中是否有空格的规则。只要除了空白之外的其他东西都匹配,它就是好的。
我正在使用C#来执行这些正则表达式规则,并且一直使用https://regexr.com/3qvlp来测试规则。
答案 0 :(得分:2)
(?<=rating:\s*\")([\S*\s*][0-9.](.*?))(?=\")
应该有效。它在&#34;之前添加了一个可选的空格。这是可变长度。如果您只需要一个或零,那么(?<=rating:\s{0,1}\")([\S*\s*][0-9.](.*?))(?=\")
将起作用。
答案 1 :(得分:0)