正規表現との混合結果、html コード内のフレーズのリストの一致
この新しい投稿は、複数の単語を含む Perl Regex match lines という別の投稿への返信でしたが、理由は不明ですが、モデレーターによって削除されました。元のスレッドで質問するのは理にかなっているように思えました。それは、そのスレッドの早い段階で提供された解決策を使用しようとする試みと、それに伴う問題に関係しているためです。faqへの一般的な参照がありましたが、これは矛盾を明らかにしていないようで、「質問がある場合は、独自の質問を投稿してください」というメッセージがありました。したがって、この投稿。
LWP::Simple を使用して Web ページを取得し、特定のフレーズを含む行を照合しようとしています。上記のスレッドの回答 #1の正規表現をコピーし、一致させる必要がある単語を置換または追加しましたが、似ているが異なる 2 つの Web ページでさまざまな結果が得られます。
私が使用している正規表現は次のとおりです。
/^(?=.*?\bYear\b)(?=.*?\bNew Moon\b)(?=.*?\bFirst Quarter\b)(?=.*?\bFull Moon\b)(?=.*?\bLast Quarter\b).*$/gim
タグで囲まれた一連のブロック内にこれらの単語を含む裸の行がある Web サイト #1 の場合、<pre>..</pre>
予想どおり、これとまったく同じすべての行に一致します。
Year New Moon First Quarter Full Moon Last Quarter
しかし、単語を囲む厄介な小さなタグがあるWebサイト#2の場合:
<br><br><span class="prehead"> Year New Moon First Quarter Full Moon Last Quarter ΔT</span><br>
それはすべての行に一致します!
タグはこれを行うための「適切な」方法であると確信してい<span>
ますが、これらのタグを回避する方法を知りたいので、両方のサイトで正規表現を1つだけ持つことができます. これを行う簡単な方法はありますか、それともhtmlを解析する方法を学ぶ必要がありますか(私がする必要はありません)?
堅牢なソリューションではなく、迅速なソリューションを探しています。これはおそらく1回限りの取引です。これらの比較的静的なページが変更された場合、それはおそらくマイナーであり、簡単に修正できます。すべての 'anti-regex-for-html' ページを私に紹介しないでください。私はそれらを見てきました。そして、私に HTML::TreeBuilder を使わせないでください。あ、お願いします...