正则表达式不起作用

时间:2015-01-26 07:36:19

标签: regex python-2.7

我需要一些帮助。我已经制作了一个python脚本来删除基于正则表达式的行。我在我的Mac上运行它

#!/usr/bin/env python

import re

inputfile = open('1.txt','r')
outputfile = open('2.txt','w')

outputfile.write(re.sub(r'^\d{6}$',"",inputfile.read()))

inputfile.close()
outputfile.close()

inputfile包含以下行:

5420
3960
4830
164841
180007
164425
5603
4593
4701
6389
4898
12345678
6532
162912
165321

我的脚本应该替换164841,180007,164425,162912,165321和#34;"

但没有任何反应,当我在记事本++中测试正则表达式或在我的Mac上升级时,它会找到正确的数字

2 个答案:

答案 0 :(得分:2)

您需要MULTILINE标记才能匹配每行中的锚点^$

outputfile.write(re.sub( re.compile('^\d{6}$', re.MULTILINE), "", inputfile.read()));

答案 1 :(得分:0)

您不需要将文件内容存储到单个变量中。只需循环输入文件中的每一行,然后检查此^\d{6}$模式。

import re
with open('/input/file','r') as f:             # open the input file for reading.
    with open('/output/file','w') as w:        # open the output file for writing.
        for line in f:                         # iterate through each line from the input file.
            if not re.match(r'^\d{6}$', line): # If the line won't have exactly 6 digits
                w.write(line)                  # Then write the corresponding line to the output file.