0

我有一个列名列表,['aa_bb', 'aa_cc_bb', 'ff_bb']我想返回有bb但没有aa的列,cc上面的结果应该是ff_bb

4

2 回答 2

0

您实际上不必使用正则表达式。你可以这样做:

for item in lst:
    if "aa" not in item and "cc" not in item and "bb" in item:
        print(item)
于 2020-08-27T12:12:37.010 回答
0

我知道您询问了视,但您可以在表达式的开头使用否定的前瞻断言。如果字符串有任何aa或内部cc.*(aa|cc)否定前瞻将匹配,因此整个正则表达式将失败。

(将等效的负后视放在最后是行不通的,因为后视不能包含可变宽度模式,例如.*。)

>>> import re
>>> names = ['aa_bb', 'aa_cc_bb', 'ff_bb']
>>> pattern = '(?!.*(aa|cc)).*bb'
>>> [name for name in names if re.match(pattern, name)]
['ff_bb']
于 2020-08-27T12:14:33.740 回答