如何在使用正则表达式搜索时排除注释行?

tnt*_*tnt 0 python string

当前面带#和任意数量的空格时,需要排除使用正则表达式定位的块.这是一个示例文件

&START   A=23  ... more data ...
                  B=24    &END
#   &START   A=34  ... more data ...
                  B=24    &END
&START   .... block 3 of data across multiple lines ....  &END
&START   .... block 4 of data across multiple lines ....  &END
Run Code Online (Sandbox Code Playgroud)

以下正则表达式不会像我预期的那样排除注释条目 -

(?!#\s*)&START(.+?)&END 
Run Code Online (Sandbox Code Playgroud)

希望遍历条目和文件以进行处理.执行此操作的Python代码(除了通过注释行之外,它的效果很好) -

f=open(filename)
data=f.read()
f.close()

pattern=re.compiler(r'(?!#\s*)&START(.+?)&END, re.DOTALL)
get_entries = pattern.findall

for entry in get_entries(data):
    # process the entry
    print entry
Run Code Online (Sandbox Code Playgroud)

可能是一个基本的疏忽,因为在正则表达式方面我是绿色的.非常感谢能够提出建议的任何人.

Ign*_*ams 5

完全忽略这条线.

if line.lstrip().startswith('#'):
  continue
Run Code Online (Sandbox Code Playgroud)

  • @ carrot-top:他不一定要解析Python代码. (2认同)