У меня есть строка, как указано:

< img src='^f('hImagepath')[1].label()^MegaMillions_NoBkgd.png'/>

Мне нужно регулярное выражение, которое вернет мне «MegaMillions_NoBkgd.png», эта часть приведенной выше строки, результат после использования регулярного выражения должен быть «MegaMillions_NoBkgd.png», сохраненный в строковой переменной.

Заранее спасибо

-1
Nikki 6 Мар 2014 в 13:54
Regex.Match(html, " .*", RegexOptions.IgnoreCase).Groups[1].Value;
 – 
Nikki
6 Мар 2014 в 14:00
Чтобы на это можно было ответить, вам нужно добавить дополнительную информацию о том, что может варьироваться в вашей строке. Я предполагаю, что < img src='^f('hImagepath')[1].label()^ не является константой? Итак, какие правила применяются?
 – 
Kjartan
6 Мар 2014 в 14:19
Хорошо, чтобы упростить, по крайней мере, мне нужно полное значение src: '^f('hImagepath')[1].label()^MegaMillions_NoBkgd.png'
 – 
Nikki
6 Мар 2014 в 14:29

3 ответа

Лучший ответ

Тогда я считаю, что это должно дать вам то, что вам нужно, более или менее:

 var x =  "< img src='^f('hImagepath')[1].label()^MegaMillions_NoBkgd.png'/>";

 // Result will be: 
 // ^f('hImagepath')[1].label()^MegaMillions_NoBkgd.png'
 var result = Regex.Match(x, @"\^f\((.)*'").Value;

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

var x =  "<img src='^f('hImagepath')[1].label()^MegaMillions_NoBkgd.png'/>";
var urlStart = x.IndexOf("'") + 1;
var urlStop = x.LastIndexOf("'");
var result = x.Substring(urlStart, (urlStop - urlStart));
0
Kjartan 6 Мар 2014 в 14:41
string matchString = Regex.Match(original_text, @"(<img([^>]+)>)").Value;
0
Maulik patel 6 Мар 2014 в 14:01
Это возвращает полный тег img
 – 
Nikki
6 Мар 2014 в 14:03

Это даст вам ожидаемый результат:

string s = "< img src='^f('hImagepath')[1].label()^MegaMillions_NoBkgd.png'/>";
int start = s.LastIndexOf('^');
int stop = s.LastIndexOf('\'');

string result = s.Substring(start+1, stop-start-1);
0
Andy 6 Мар 2014 в 14:50