C# 正则表达式构建

本文关键字:构建 正则表达式 | 更新日期: 2023-09-27 18:33:06

我的C# Web 应用程序中有一个编码字符串:

&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 之间变化。

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

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

C# 正则表达式构建

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

以下正则表达式将在</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 />");

结果将是:

American Arborvitae    黑胡桃木     

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