2017-06-02 158 views
0

我有以下的字符串:如何找到兩個特定字符串之間的數字?

{ 
    "_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
  • 1.1
  • 0.1

我需要它也適應用於:

  • -.1

  • 科學記數法,所以如果有一種方法可以"value":和下}

+2

你的例子看起來像JSON。你難道不能解析JSON並獲得你的價值嗎? – Icemanind

+0

該字符串來自非託管代碼。我不能在C#中使用任何字符串操作或正則表達式。 – BikerDude

+0

@BikerDude:是的,你可以。你可以將它解析到一個匹配的類(es)上,並從那裏獲取你的數據。 –

回答

1

正如評論中所表達的,這看起來像JSON,你應該解析它,而不是嘗試使用正則表達式。但是,如果你必須使用正則表達式,這樣的事情似乎工作:

(?<=("value":))(?:-?\d*\.?)?\d+(?=}) 

的變化是增加-?覆蓋可選的減號,改變你的.我以爲應該到小數點匹配\.因爲.在正則表達式中匹配任意字符,所以它需要被轉義。然後,我添加了?以使其成爲可選項。

https://regex101.com/r/drNrDS/1

如果你想支持像1.1e101.1e-3號碼,然後你只需要添加一些可選的比賽:

(?<=("value":))(?:-?\d*\.?)?\d+(?:e|e-)?\d*(?=}) 

我們增加相匹配ee-(?:e|e-)?\d*接着是一些數字。

+0

任何可以用於科學記譜法的東西? – BikerDude

+0

不明白爲什麼我的不會爲此工作,請使用內聯修飾符查看我的更新答案 – DNKROZ

+0

@BikerDude:是的 - 請參閱我的編輯。 –

2

之間捕捉一切,我相信這將這樣的伎倆: -

/(?s)(?<="value":)(.+?)(?=})/g (使用內聯修飾符)

例如:https://regex101.com/r/drNrDS/2

enter image description here

+1

作品的格式化表示更新了您的問題!但被打到蜂鳴器。 – BikerDude

+0

@DNKROZ你使用過哪個工具? –

+0

@BerndOtt我用過:https://www.debuggex.com/ – DNKROZ

相關問題