2014-01-04 6 views
0

Я пытаюсь извлечь некоторые цифры из строки: foo=bar&hash=00000690821388874159\";\nИзвлечение цифры из строки

Я попытался сделать группу для цифры, но он всегда возвращает пустую строку.

string matchString = Regex.Match(textBox1.Text, @"hash=(\d+)\\").Groups[1].Value; 

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

+0

Это ** работает **, как и ожидалось. 'string matchString = Regex.Match (@" foo = bar & hash = 00000690821388874159 \ ""; \ n ", @" hash = (\ d +) \\ "). Группы [1] .Value;' возвращает '00000690821388874159' –

+1

@ ФУНТ это потому, что вы использовали '@', который читал \ как обычный символ, а не escape-последовательность. – Vache

ответ

6

В вашей строке нет \\, \ фактически используется, чтобы избежать цитаты, поэтому регулярное выражение не совпадает. Это работает:

string matchString = Regex.Match(textBox1.Text, @"hash=(\d+)""").Groups[1].Value; 

http://dotnetfiddle.net/2U0lkI

+0

* facepalm * ... спасибо – Johan

+2

+1. Сторона примечания: исходная строка выглядит как строка запроса, и есть намного лучший способ проанализировать ее «HttpUtility.ParseQueryString» (если ссылка приемлема) См. Также [Как разобрать запрос] (http://stackoverflow.com/questions/68624/как к разбору-а-запрос-строка-в-а-NameValueCollection в сети) –

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