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

2024-04-19 23:47:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个这样结构的文件:

create "layer01";
    attr "False";

create "layer02";
    other_stuff;

create "layer03";
    attr "False";

我已经有了一个['layer01', 'layer02', 'layer03']的列表,我需要检查它们中的哪一个缩进了attr "False"(总是这个名称)。有没有干净/聪明的方法


Tags: 文件方法名称false列表create结构attr
1条回答
网友
1楼 · 发布于 2024-04-19 23:47:01

你可以用

^
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

相关问题 更多 >