首页 > 解决方案 > 左括号和右括号之间的值

问题描述

我无法找到最后一行的模式,因为它有子括号()。我正在尝试获取 first (before(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)

除了最后一行,其余所有记录都按预期匹配,因为它们之间没有子括号。

标签: regex

解决方案


推荐阅读