我有以下字符串:
{
"_matrix":[
{
"__FRAMEWORK_ANY_SPEC__":"namesdeleted.mumbojumbo`1[[System.Double, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]",
"value":0
},
{
"__FRAMEWORK_ANY_SPEC__":"namesdeleted.mumbojumbo`1[[System.Double, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]",
"value":1
},
{
"__FRAMEWORK_ANY_SPEC__":"namesdeleted.mumbojumbo`1[[System.Double, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]",
"value":0
},
{
"__FRAMEWORK_ANY_SPEC__":"namesdeleted.mumbojumbo`1[[System.Double, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]",
"value":-1
},
{
"__FRAMEWORK_ANY_SPEC__":"namesdeleted.mumbojumbo`1[[System.Double, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]",
"value":-.1
},
{
"__FRAMEWORK_ANY_SPEC__":"namesdeleted.mumbojumbo`1[[System.Double, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]",
"value":1.1
},
{
"__FRAMEWORK_ANY_SPEC__":"namesdeleted.mumbojumbo`1[[System.Double, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]",
"value":0
},
{
"__FRAMEWORK_ANY_SPEC__":"namesdeleted.mumbojumbo`1[[System.Double, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]",
"value":0
},
{
"__FRAMEWORK_ANY_SPEC__":"namesdeleted.mumbojumbo`1[[System.Double, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]",
"value":.1
},
{
"__FRAMEWORK_ANY_SPEC__":"namesdeleted.mumbojumbo`1[[System.Double, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]",
"value":0
},
{
"__FRAMEWORK_ANY_SPEC__":"namesdeleted.mumbojumbo`1[[System.Double, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]",
"value":1
},
{
"__FRAMEWORK_ANY_SPEC__":"namesdeleted.mumbojumbo`1[[System.Double, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]",
"value":0
},
{
"__FRAMEWORK_ANY_SPEC__":"namesdeleted.mumbojumbo`1[[System.Double, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]",
"value":0
},
{
"__FRAMEWORK_ANY_SPEC__":"namesdeleted.mumbojumbo`1[[System.Double, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]",
"value":0
},
{
"__FRAMEWORK_ANY_SPEC__":"namesdeleted.mumbojumbo`1[[System.Double, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]",
"value":0
},
{
"__FRAMEWORK_ANY_SPEC__":"namesdeleted.mumbojumbo`1[[System.Double, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]",
"value":1
}
]
}
我的主要内容我需要收集"value":
之后和下一个}
之间的所有数字。该值可以是任何十进制/整数。
我个人也希望它能够使用科学记数法,如果可能的话。
我现在的正则表达式是:
(?<=("value": ))(?:\d*.)?\d+(?=})
我在C#中使用它,因此?<=
有效。
我目前的正则表达式能够过滤以下类型的数字:
我还需要它以适应:
- 1
科学记数法,所以如果有办法捕捉"value":
和下一个}
之间的所有内容
答案 0 :(得分:2)
答案 1 :(得分:1)
正如评论中所表达的,这看起来像JSON,你应该解析它而不是试图使用正则表达式。但如果你必须使用正则表达式,这样的东西似乎有用:
(?<=("value": ))(?:-?\d*\.?)?\d+(?=})
更改是添加-?
以涵盖可选的减号,并更改.
我认为应该将小数与\.
匹配,因为.
匹配< em>正则表达式中的任何字符,因此需要进行转义。然后我添加了?
以使其成为可选项。
https://regex101.com/r/drNrDS/1
如果您想支持1.1e10
和1.1e-3
等号码,那么您只需添加一些可选匹配项:
(?<=("value": ))(?:-?\d*\.?)?\d+(?:e|e-)?\d*(?=})
因此,我们添加了与(?:e|e-)?\d*
或e
匹配的e-
,后跟一些数字。