我正在尝试搜索以下 HTML 字符串以获取这些产品的成本:
<div id=menu>
<p>A hamburger without cheese costs $5.</p>
<p>A cheeseburger with one patty costs $6.</p>
</div>
我能够使用以下表达式成功获取每件商品的价格:
string hamburger = "<p>A hamburger[^\\$]+\\$(?<price>.*?).</p>";
string cheeseburger = "<p>A cheeseburger[^\\$]+\\$(?<price>.*?).</p>"
public string GetProductPrice(string expression)
{
expression = Regex.Unescape(expression);
Regex regex = new Regex(expression);
MatchCollection mc = regex.Matches(MENU_DIV_STRING);
if (mc.Count > 0 && mc[0].Groups.Count == 2)
return mc[0].Groups[1].ToString();
else
return "--";
}
但是,当给出这个时,我被抛出了一个循环:
<div id=menu>
<p>A hamburger without cheese costs $5.</p>
<p>A cheeseburger with one patty costs $6.</p>
<p>A cheeseburger (SPECIAL: add an additional patty for $1 each) costs $6.</p>
</div>
“以 1 美元添加第二个肉饼”中出现的第二个美元符号让我陷入了一个循环。我已经研究并尝试了很多事情,比如使用模式,在这一点上我完全搞糊涂了。
是否有一个正则表达式可以找出一个芝士汉堡的成本是否有特殊的?