-1

我的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 />"

有没有一种相对简单的方法来使用 aregex来获取 和 之间的</a>-10 - 10<br /></a>-1 - 1<br />?我真的不是最擅长构建正则表达式,我不确定如何为这样的东西定义模式。或者可以更容易地将这些值放入字符串数组中吗?条目的数量可以在 1-30 之间变化。

---- 每个请求的用例 ----

产品页面是大量树木的页面。用户可以输入他们想要的任何数字(上限为 1000)。根据季节和一年中的时间,可以有 1-30 种不同的树木。

4

2 回答 2

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

于 2013-09-28T21:49:27.027 回答
0

以下正则表达式将匹配</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">美国侧柏
    <a href="/product.aspx?zpid=647">黑胡桃木
     <br />

剩下的就看你了。希望这可以帮助!

于 2013-09-28T22:08:48.623 回答