以任何顺序匹配所有正则表达式条件

时间:2012-10-25 00:30:30

标签: python regex

我有一个网页,我想用正则表达式来抓取。该页面最多可包含3个我关心的文本块。

如果存在所有三个文本块,则它应返回匹配,否则返回不匹配。文本可以是页面上的任何顺序。

我试过这个,但它不符合“任何订单”的要求:

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

我应该在这里使用反向引用吗?还是有另一种解决方案吗?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

>>> ('a' and 'b' and 'c') in 'xyz'
False
>>> ('a' and 'b' and 'c') in 'ayz'
True
>>> ('a' and 'b' and 'c') in 'abc'
True