廃棄目的で正規表現ジェネレーターを作成しようとしていますが、ガイダンスをいただければ幸いです。
アイデアは、大きなテキスト (html) があり、常に類似している 2 つの (少なくとも) DOM 要素 (Google からの最初の 2 つの結果など) を選択し、これをスクレイピング (一致) する正規表現を生成する必要があるということです。結果。
例: 選択された要素 1 (これはユーザーによって入力されます):
<a onmousedown="return rwt(this,'','','','1','AFQjCNHqQo9TrXtXXM5lDpiCmNQO9xwkhw','','0CGoQFjAA',null,event)" class="l" href="http://www.miniclip.com/"><em>Games</em> at Miniclip.com - Play Free Online <em>Games</em></a>
選択された要素 2 (これはユーザーによって入力されます):
<a onmousedown="return rwt(this,'','','','2','AFQjCNGlNySkvcXMxEUmjCMOJRQPCdqBHQ','','0CHIQFjAB',null,event)" class="l" href="http://www.games.com/"><em>Games</em>.com: Play <em>Games</em> Online - Free <em>Games</em>, Download <em>Games</em> <b>...</b></a>
両方の要素を含む HTML テキスト:
<ol id="rso" eid="GcrGT_KHH4f3sgbXmci5Cw"><!--m--><li class="g"><div sig="U8P" bved="0CBUQkQo" pved="0CBQQkgowAA" class="vsc"><h3 class="r"><a onmousedown="return rwt(this,'','','','1','AFQjCNHqQo9TrXtXXM5lDpiCmNQO9xwkhw','','0CGoQFjAA',null,event)" class="l" href="http://www.miniclip.com/"><em>Games</em> at Miniclip.com - Play Free Online <em>Games</em></a></h3><div class="vspib" aria-label="Detalii rezultat" role="button" tabindex="0">
</div></div></div><!--n--></li><!--m--><li class="g"><div sig="fUe" bved="0CBsQkQo" pved="0CBoQkgowAQ" class="vsc"><h3 class="r"><a onmousedown="return rwt(this,'','','','2','AFQjCNGlNySkvcXMxEUmjCMOJRQPCdqBHQ','','0CHIQFjAB',null,event)" class="l" href="http://www.games.com/"><em>Games</em>.com: Play <em>Games</em> Online - Free <em>Games</em>, Download <em>Games</em> <b>...</b></a></h3><div class="vspib" aria-label="Detalii rezultat" role="button" tabindex="0">
この場合、適切な正規表現は次のようになります。
(<h3 class="r">)(.*?)(</h3><div)
理解するのは難しくありません。問題<h3 class="r">
は、結果に関係のない別の要素に表示される場合に表示されます。たとえば、次のように追加した場合:
<h3 class="r">THIS IS JUST AN EXTRA THING</h3>
HTML テキストの開始時に、上記の正規表現は機能しません。
新しい正規表現は次のようにする必要があります。
(class="vsc"><h3 class="r">)(.*?)(</h3><div)
これを達成するのは簡単なことではありませんが、私の考えは、要素の類似点を見つけることです (たとえば、要素の前後に 100 文字を取り、要素 1/要素 2 の同一性を確認します)。
これを達成するための最良の方法について、誰かが私を案内してくれることを願っています。
前もって感謝します