0

正規表現を使用してスクレイピングしたい Web ページがあります。このページには、気になるテキスト ブロックを 3 つまで含めることができます。

3 つのテキスト ブロックがすべて存在する場合は一致が返され、それ以外の場合は一致が返されません。テキストは、ページ上で任意の順序にすることができます。

私はこれを試しましたが、「任意の順序」の要件を満たしていません:

re_text = (Text block 1)((.|\n)*)(Text block 2)((.|\n)*)(Text block 3)
re_compiled = re.compile(re_text)

ここで後方参照を使用する必要がありますか? それとも別の解決策がありますか?

4

2 に答える 2

3

個別に探してみてはいかがでしょうか。

re_texts = [re.compile('textblock1'), re.compile('textblock2'), re.compile('textblock3')]

if all(r.search(text) for r in re_texts):
    # all matches found
于 2012-10-25T00:33:37.460 に答える
-1
>>> ('a' and 'b' and 'c') in 'xyz'
False
>>> ('a' and 'b' and 'c') in 'ayz'
True
>>> ('a' and 'b' and 'c') in 'abc'
True
于 2012-10-25T00:41:18.113 に答える