2013-09-28 3 views
-1

У меня есть строка закодировать в моей C# веб приложение:C# регулярное выражение Здание

&lt;a href=&quot;/product.aspx?zpid=564&quot;&gt;American Arborvitae &lt;/a&gt;-10 - 10<br />&lt;a href=&quot;/product.aspx?zpid=647&quot;&gt;Black Walnut &lt;/a&gt;-1 - 1<br /> <br />

Это декодируется:

"<a href=\"/product.aspx?zpid=564\">American Arborvitae</a>-10 - 10<br /><a href=\"/product.aspx?zpid=647\">Black Walnut </a>-1 - 1<br /> <br />"

Есть довольно простой способ использовать regex для получения значений между </a>-10 - 10<br /> и </a>-1 - 1<br />? Я не лучший в создании регулярных выражений, и я не уверен, как определить шаблон для чего-то подобного. Или могут ли значения быть помещены в массив строк проще? Количество записей может варьироваться от 1 до 30.

---- Use Case Per Запроса ----

страница продукта страница для больших количеств деревьев. Пользователь может ввести любое количество для требуемой суммы (колпачок 1000). Там может быть где-то между 1-30 различными деревьями в зависимости от сезона и времени года.

+0

Привет, что такое ваш прецедент? :) – AlanFoster

+0

Я не вижу, как первая строка декодируется до того, что вы упомянули ... И нет строки ' -0 - 0
' в строке? Или вы имеете в виду ' -1 - 1
'? Могут ли цифры меняться? Что-то вроде [этого] (http://regex101.com/r/oF5oV5)? – Jerry

+0

Да, извините, я хочу использовать 1 вместо 0. Цифры могут быть тем, что когда-либо вводит пользователь, я думаю, что они ограничены 1000. –

ответ

0
var regex = new Regex("</a>(.*?)<br />"); 
var matches = regex.Matches("<a href=\"/product.aspx?zpid=564\">American Arborvitae</a>-10 - 10<br /><a href=\"/product.aspx?zpid=647\">Black Walnut </a>-1 - 1<br /> <br />"); 
foreach (Match match in matches) 
    Console.WriteLine(match.Groups[1].Value); 
Console.ReadLine(); 

-10 - 10 -1 - 1

0

Следующая Regex будет соответствовать на </a>-0 - 0<br /> через </a>-99 - 99<br /> поэтому он должен обрабатывать количество элементов вы ожидаете:

var rx = new Regex(@"</a>-\d{1,2}\s-\s\d{1,2}<br\s*/>"); 

Вы можете использовать его для получения массива таких строк:

var parts = rx.Split("<a href=\"/product.aspx?zpid=564\">American Arborvitae</a>-10 - 10<br /><a href=\"/product.aspx?zpid=647\">Black Walnut </a>-1 - 1<br /> <br />"); 

И результат будет:

 
    <a href="/product.aspx?zpid=564">American Arborvitae 
    <a href="/product.aspx?zpid=647">Black Walnut 
    <br /> 

Остальное зависит от вас. Надеюсь это поможет!

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