これらの製品のコストを取得するために、次の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>
「2つ目のパティを$1で追加」の2番目のドル記号が表示されたため、完全なループが発生しました。私はパターンの使用など、さまざまなことを研究して試しましたが、この時点で私は完全に混乱しました。
特別なものがあるかどうかにかかわらず、チーズバーガーの価格を知る正規表現はありますか?