我找不到最后一行的模式,因为它的子括号为()
。我正在尝试获取(
之前的第一个(array['something']
和相应的右括号)
样本数据集
((array['ky'] <@ type_list AND array['Deviceless4D'] <@ value_list)))))
(array['snm'] <@ type_list AND (array['RAQ'] <@ value_list OR array['QQWYR'] <@ value_list)) AND ( array['snm'] <@ type_list AND NOT array['AQ'] <@ value_list)))
( array['ky'] <@ type_list AND NOT array['ASIR'] <@ value_list)))
( array['type_q'] <@ type_list AND NOT array['1.0Q 22QW_%_Driver'] <@ value_list))
(array['snm'] <@ type_list AND (array['HM'] <@ value_list OR array['UA'] <@ value_list OR array['R'] <@ value_list OR array['W'] <@ value_list)) AND ( array['revision'] <@ type_list AND NOT array['SQ1.1'] <@ value_list)))
( array['x_type'] <@ type_list AND NOT array['2.1T 44QAW SN (645222) or (124T)'] <@ value_list)))
下面是我正在尝试的正则表达式:
r"(?s)\(\s*array\['\w+'\]\s*<@\s*type_list .*?\)"
但是最后一个样本记录给出的匹配如下:
( array['x_type'] <@ type_list AND NOT array['2.1T 44QAW SN (645222)
最后一行的预期输出:
( array['x_type'] <@ type_list AND NOT array['2.1T 44QAW SN (645222) or (124T)'] <@ value_list)
除了最后一行,其余所有记录均符合预期,因为它们之间没有子括号。