我有一个列名列表,['aa_bb', 'aa_cc_bb', 'ff_bb']我想返回有bb但没有aa的列,cc上面的结果应该是ff_bb
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 回答