2013-03-03 3 views
2

Я действительно борется с регулярными выражениями и не могу показаться, чтобы извлечь номер из этой строкиИзвлечение номера из струнного RegEx

"id":143331539043251, 

Я пытался с этим ... но я получаю ошибки компиляции

var regex = new Regex(@""id:"\d+,"); 

Обратите внимание, что полная строка содержит другие номера, которые я не хочу. Я хочу, чтобы число между ид: и окончание,

+1

Откуда взялась эта строка? Похоже, он потенциально может быть частью части [JSON] (http://en.wikipedia.org/wiki/Json), и в этом случае вы должны использовать правильный анализатор JSON, а не регулярное выражение. –

+0

Он сделал, но сервер возвращает неверный JSON, который содержит JSON в JSON. Я усложнил проблемы, поэтому я решил использовать регулярное выражение. –

+0

JSON разрешено содержать JSON при условии, что это свойство указано; вам просто нужно проанализировать внутреннюю часть (ы) второй раз. –

ответ

3

Если все, что вам нужно, это цифры, просто сравнить, что:

[0-9]+ 

Обратите внимание, что я не использую \d, как будет соответствовать на любой цифры (например, арабские цифры) в модуле .NET regex.


Update, после замечаний по этому вопросу и на этом ответ - следующий регулярное выражение будет соответствовать шаблону и разместить совпавшие номера в захвате группа:

@"""id"":([0-9]+)," 

Используется как:

Regex.Match(@"""id"":143331539043251,", @"""id"":([0-9]+),").Groups[1].Value 

Который возвращает 143331539043251.

+0

Да, но вся строка содержит другой номер, который я не хочу. Мне нужно, чтобы он хватал числа между id: и окончанием, –

+0

@JamesJeffery - Это довольно важная деталь. Что-то, что вы хотели бы упомянуть в вопросе. Почему бы не отредактировать его и сделать именно это? – Oded

3

Попробуйте этот код:

var match = Regex.Match(input, @"\""id\"":(?<num>\d+)"); 
var yourNumber = match.Groups["num"].Value; 

Затем используйте извлеченный номер yourNumber в виде строки или разобрать его типа номера.

2

Если вы открыты для использования LINQ попробовать следующее (C#):

строка stringVariable = "123cccccbb --- 556876 --- ==";

var f = (from a in stringVariable.ToCharArray() где Char.IsDigit (a) == true select a);

var number = String.Join ("", f);

Смежные вопросы