2010-10-14 6 views
1

Мне нужно извлечь подстроку из форматированного значения следующим образом:Регулярных выражений

«(оригинальная ссылка на„item1“является: 12345)»

текст, который мне нужен 12345. «item1 'может измениться, хотя остальная часть строки останется неподвижной.

настоящее время у меня что-то вроде этого:

string myString = “(The original reference for ‘item1’ is: 12345)”; 
    string regexMatch = "(The original reference for .* is: "; 
    Regex regex = new Regex(regexMatch); 
    Console.WriteLine(regex.Match(myString).ToString()); 

Это просто ошибки, говоря мне нужно закрывающую скобку. Может кто-нибудь указать мне в правильном направлении на этот, пожалуйста?

ответ

2

Вы хотите номер в этом текстовом контексте, верно? Попробуйте следующее регулярное выражение:

string regexMatch = @"(?<=\(The original reference for '[^']+' is: *)\d+(?=\))"; 

Значение матча будет тогда числом (ничего больше).

2

Вам необходимо избегать (.

string regexMatch = @"\(The original reference for .* is: "; 

Обратите внимание, что @ знак, который вызывает компилятор не обрабатывает управляющие последовательности в строке.
В противном случае вам нужно будет сбежать от \ от компилятора, например: "\\(...".

Кроме того, вы, вероятно, хотите ленивым подстановочные:

string regexMatch = @"\(The original reference for .*? is: "; 
Смежные вопросы