Possible Duplicate:
RegEx match open tags except XHTML self-contained tags
我正在尝试搜索以下 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 美元加第二个馅饼”中,让我陷入了一个完整的循环。我已经研究并尝试了很多东西,比如使用模式,但在这一点上我完全弄糊涂了。
是否有一个正则表达式可以找出一个芝士汉堡的价格是多少,是否有特价?
我是一名优秀的程序员,十分优秀!