在python中使用Reg表达式

时间:2013-01-12 14:53:07

标签: python regex expression

for line in open(fname, 'r'): 
    if re.search('#', line):
        #print(line)
        pass
    elif re.search('# segment: retract', line):
        print(line)
        print('break here')
        break
    else:
        outfile.write(line)

elif语句不起作用,任何人都可以帮助我使用匹配

的正则表达式

" #segment:retract"

代码甚至没有输入elif语句。

由于

2 个答案:

答案 0 :(得分:3)

if子句的第一个表达式将始终与包含“#”的行匹配。因此,elif子句中更具体的条件将永远不会匹配,因为始终会执行if子句中更通用的条件。因此,您将首先测试更具体的条件,并将更通用的条件移动到elif部分。

for line in open(fname, 'r'): 

    if re.search('# segment: retract', line):
        print(line)
        print('break here')
        break
    elif re.search('#', line):
        #print(line)
        pass
    else:
        outfile.write(line)

答案 1 :(得分:2)

我不认为这是正则表达式的概率。这种情况需要像

一样逆转
if re.search('# segment: retract', line):
    print(line)
    print('break here')
    break
elif re.search('#', line):
    #print(line)
    pass
else:
    outfile.write(line)

问题是第一个if条件捕获所有以#开头的行,否则永远不会发生。