0

我有一个想要使用正则表达式抓取的网页。该页面最多可能包含 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 回答