Python-仅在缩进行中使用正则表达式

时间:2019-07-12 07:33:05

标签: python regex find

我有一个具有这种结构的文件:

create "layer01";
    attr "False";

create "layer02";
    other_stuff;

create "layer03";
    attr "False";

我已经有一个['layer01', 'layer02', 'layer03']的列表,我需要检查其中哪个缩进了attr "False"(哪个将始终使用此名称)。有没有一种干净/聪明的方法可以做到这一点?

1 个答案:

答案 0 :(得分:1)

您可以使用

^
create\s+"([^"]+)";\s+
attr\s+"([^"]+)";

import re

data = """
create "layer01";
    attr "False";

create "layer02";
    other_stuff;

create "layer03";
    attr "False";
"""

rx = re.compile(r"""
    ^
    create\s+"([^"]+)";\s+
    attr\s+"([^"]+)";
""", re.MULTILINE | re.VERBOSE)

layers = [layer.group(1) 
          for layer in rx.finditer(data) 
          if layer.group(2) == "False"]
print(layers)

哪个产量

['layer01', 'layer03']

请参见a demo on regex101.com