我真的使用正則表達式掙扎,似乎無法從這個字符串從字符串的正則表達式中提取數字
"id":143331539043251,
我這個嘗試提取數...但我得到的編譯錯誤
var regex = new Regex(@""id:"\d+,");
請注意,完整的字符串包含我不想要的其他數字。我想ID之間的數字:結束和,
我真的使用正則表達式掙扎,似乎無法從這個字符串從字符串的正則表達式中提取數字
"id":143331539043251,
我這個嘗試提取數...但我得到的編譯錯誤
var regex = new Regex(@""id:"\d+,");
請注意,完整的字符串包含我不想要的其他數字。我想ID之間的數字:結束和,
如果你需要的是數字,只是匹配的是:
[0-9]+
請注意,我沒有使用\d
因爲這將匹配任何位(如阿拉伯數字)在.NET正則表達式引擎中。
更新,下面就這個問題,並在此答案的評論 - 以下的正則表達式匹配的格式,並將匹配的號碼捕獲組:
@"""id"":([0-9]+),"
用作:
Regex.Match(@"""id"":143331539043251,", @"""id"":([0-9]+),").Groups[1].Value
其中返回143331539043251
。
是的,但整個字符串包含我不想要的其他數字。我需要它在id之間抓取數字:和結尾, – 2013-03-03 14:49:40
@JamesJeffery - 這是一個相當重要的細節。你想在問題中提到的東西。爲什麼不編輯它,並做到這一點? – Oded 2013-03-03 14:55:59
嘗試此代碼:
var match = Regex.Match(input, @"\""id\"":(?<num>\d+)");
var yourNumber = match.Groups["num"].Value;
然後使用提取的數yourNumber
作爲字符串或它解析到號碼類型。
如果你是開放的使用LINQ嘗試以下方法(C#):
串stringVariable = 「123cccccbb --- 556876 --- ==」;
var f =(from a in stringVariable.ToCharArray()where Char.IsDigit(a)== true select a);
var number = String.Join(「」,f);
這個字符串從哪裏來的?它看起來可能是[JSON]的一部分(http://en.wikipedia.org/wiki/Json),在這種情況下,您應該使用適當的JSON解析器,而不是正則表達式。 – 2013-03-03 14:49:09
它的確如此,但服務器返回格式錯誤的JSON,其中包含JSON內的JSON。我的問題很複雜,這就是我決定使用正則表達式的原因。 – 2013-03-03 14:50:55
只要JSON被引用屬性,就允許JSON包含JSON;你只需要再次解析內部件。 – 2013-03-03 14:51:53