C# 如何在两个特定字符串之间找到一个数字?
我将以下内容作为字符串:C# 如何在两个特定字符串之间找到一个数字?,c#,regex,C#,Regex,我将以下内容作为字符串: { "_matrix":[ { "__FRAMEWORK_ANY_SPEC__":"namesdeleted.mumbojumbo`1[[System.Double, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]", "value":0 }, { "__FRAMEWO
{
"_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+(?=})
(?我相信这会奏效:-
/(?)s)(?我相信这会奏效:-
/(?s)(?如注释中所述,这看起来像JSON,您应该解析它,而不是尝试使用正则表达式。但是如果您必须使用正则表达式,类似这样的方法似乎有效:
(?<=("value": ))(?:-?\d*\.?)?\d+(?=})
因此,我们添加了(?:e | e-?\d*
,它匹配e
或e-
,后跟一些数字。如注释中所述,这看起来像JSON,您应该解析它,而不是尝试使用正则表达式。但是如果必须使用正则表达式,类似的方法似乎有效:
(?<=("value": ))(?:-?\d*\.?)?\d+(?=})
所以我们添加了(?:e | e-)?\d*
哪个匹配e
或e-
,后面跟一些数字。您的示例看起来像JSON。您不能只解析JSON并获取您的值吗?这个字符串来自非托管代码。在C#中,除了字符串操纵或regexp之外,我真的不能使用任何东西。@BikerDude:可以。您可以将它解析为匹配的类它不是有效的JSON(有些值没有引号)。但它非常容易解析;例如,在Python中,ast.literal_eval()
完成了这项工作。你的示例看起来像JSON,而不是抱歉格式化字符串。你不能只解析JSON并获取你的值吗?这个字符串来自非托管代码。在C#中,我只能使用字符串操纵或regexp。@BikerDude:可以。你可以将它解析为匹配的类它不是有效的JSON(有些值没有引号)。但它非常容易解析;例如,在Python中,ast.literal_eval()
完成了这项工作。与其说抱歉,不如说格式化了stringWorks!但打到了蜂鸣器上。@DNKROZ你在这张图片上使用了哪种工具?很好!但打到了蜂鸣器上。@DNKROZ你在这张图片上使用了哪种工具?任何可以用于科学符号的工具?不明白为什么我的工具不适用于此,请参阅我的更新答案以获取更多信息使用内联modifier@DNKROZ:我认为没有人说你的不起作用。尽管你的更为宽容。例如,它将匹配“值”:Foo}
。即使是你的链接也有1.es3
,这不应该匹配,因为它不是一个数字。@MattBurland不,我知道,在你发布编辑之前,我指的是科学符号。是的,这两个值之间的任何值都匹配,这是问题所要求的。你是对的,你的更具体,任何可能适用于还有科学的符号?不明白为什么我的不适用于此,请参阅我的更新答案,以获得使用内联符号的解决方案modifier@DNKROZ:我认为没有人说你的不起作用。尽管你的更为宽容。例如,它将匹配“值”:Foo}
。即使是你的链接也有1.es3
,这不应该匹配,因为它不是一个数字。@MattBurland不,我知道,在你发布编辑之前,我指的是科学记数法。是的,这两个值之间的任何内容都匹配,这就是问题所要求的。你是对的,你的更具体