0

これは私の正規表現です:

/<strong>.*ingredients.*<\/ul>/im

ソースコードを仮定すると:

<strong>Contest closes on Thursday May 10th 2012 at 9pm PST</strong></div>
<br />
<br />
<br />
* I am not affiliated with Blue Marble Brands or Ines Rosales Tortas in any way.&nbsp; I am not sponsored by them and did not receive any compensation to write this post...I just simply think the&nbsp;Tortas&nbsp;are wonderful!<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-35J5vNrXkqE/T6htXTafrmI/AAAAAAAAA5E/g2mtiuSpSmw/s1600/food+003.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="480" mea="true" src="http://1.bp.blogspot.com/-35J5vNrXkqE/T6htXTafrmI/AAAAAAAAA5E/g2mtiuSpSmw/s640/food+003.JPG" width="640" /></a></div>
<br />
<strong><span style="font-size: large;">Ingredients:</span></strong><br />
<ul>
<li>Ines Rosales Rosemary and Thyme Tortas</li>
<li>Pizza Sauce (ready made in a jar)</li>
<li>Roma Tomatoes</li>
<li>Roasted Red Peppers </li>
<li>Marinated Artichoke Hearts</li>
<li>Olives (I used Pitted Spanish Manzanilla Olives)</li>
<li>Daiya Vegan Mozzarella Cheese</li>
</ul>
<span style="font-size: large;"><strong>Directions:</strong></span><br />
<br />
Spread small amount of pizza sauce over Torta. 

正規表現は貪欲で、からすべてを取得します<strong>Contest...</ul>が、最短の一致が得られるはずです<strong><span style="font-size: large;">Ingredients...</ul>

これは私の要点です: https://gist.github.com/3660370

::編集:: strongタグと成分、および成分とulの間に柔軟性を持たせてください。

4

3 に答える 3

0

これを試して:

/<strong><span.*ingredients.*<\/ul>/im

html の正規表現はお控えください。代わりに Nokogiri または同様のライブラリを使用してください。

于 2012-09-06T21:21:13.067 に答える
0

これがあなたが探しているものだと思います:

/<strong>(?:(?!<strong>).)*ingredients.*?<\/ul>/im

最初のタグを で置き換えると、検索する前に別のタグを除くすべてのものと一致させることができ.*ます。その後、貪欲ではないため、最初に見つかったインスタンスでマッチングを停止します。(あなたのサンプルには1つの要素しか含まれていませんが、実際のデータにはもっと多くの要素があると思います。)(?:(?!<strong>).)*<strong>ingredients.*?</ul><UL>

通常の警告が適用されます。この正規表現は、完全に有効な HTML でもだまされる可能性がたくさんあります。

于 2012-09-07T11:08:06.543 に答える
0

これはうまくいくはずです:

/(?!<strong>.*<strong>.*<\/ul>)<strong>.*?ingredients.*?<\/ul>/im

ここでテストしてください

<strong>基本的に、正規表現は次のように複数の前を避けるために否定的な先読みを使用してい<\ul>ます:(?!<strong>.*<strong>.*<\/ul>)

于 2012-09-06T22:02:55.773 に答える