我需要从损坏的 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来测试这些规则。
(?<=rating:\s*\")([\S*\s*][0-9.](.*?))(?=\")
应该管用。它在可变长度的 " 之前添加了一个可选的空格。如果你只想要一个或零,那么(?<=rating:\s{0,1}\")([\S*\s*][0-9.](.*?))(?=\")
就可以了。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句