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不,我知道,在你发布编辑之前,我指的是科学记数法。是的,这两个值之间的任何内容都匹配,这就是问题所要求的。你是对的,你的更具体