C# 忽略正则表达式中的空格并匹配

C# 忽略正则表达式中的空格并匹配,c#,json,regex,C#,Json,Regex,我需要从损坏的Json中读取一些无法解析为对象的数据。我需要用正则表达式来得到这个。我还有最后一件事给我带来麻烦。下面是我正在使用的Json的一个片段 price: "1129.0", quantity: "0", rating: "4.9", ratingCount: "127", 我想提取4.9。为此,我有以下正则表达式 (?<=rating: \")([\s\S]*?)(?=\") 我无法修改源内容,因为需要在某些节点中保留空白。我试图说得非常具体,并使用了以下内容 (?<

我需要从损坏的Json中读取一些无法解析为对象的数据。我需要用正则表达式来得到这个。我还有最后一件事给我带来麻烦。下面是我正在使用的Json的一个片段

price: "1129.0",
quantity: "0",
rating: "4.9",
ratingCount: "127",
我想提取
4.9
。为此,我有以下正则表达式

(?<=rating: \")([\s\S]*?)(?=\")
我无法修改源内容,因为需要在某些节点中保留空白。我试图说得非常具体,并使用了以下内容

(?<=rating: \")([\S*\s*][0-9.](.*?))(?=\")

(?
(?您可以在正向查找中添加
\s*
,以匹配零个或多个空白字符,并使用否定字符类
[^”]+
不匹配


感谢您的回复,我已经尝试过了,但它似乎并不有趣,我有完全相同的东西,它对我也有效。我还用c#代码对它进行了测试,它对我有效。regexr不使用.net风格的regex;而.net版本的regex支持lookbehinds中的量词,正如您在这里使用的那样,它们的版本可能不支持。U如果您发现意外错误,请使用regexstorm测试.net正则表达式。请尝试
(?您使用的是不需要的断言。这是一种非常糟糕的编写正则表达式的方法。它速度慢,有可能会出问题的陷阱。因为您仍然在捕获,所以请删除断言。
评级\s*:\s*([^]*)”
(?<=rating: \")([\S*\s*][0-9.](.*?))(?=\")