大侠帮忙!读取文件和读字符串为什么有区别

大侠帮忙!读取文件和读字符串为什么有区别

请看代码先:

[Copy to clipboard] [ - ]
CODE:
import re
a = '<word>above</word> <expl> prep. 1. 在……上方;2. 高于,超于</expl>'
file = open('a_out.xml','r')
done = 0
while not done:
    aLine = file.readline()
    #print aLine
    if aLine != "":
        m = re.search('\<expl\>(.*\;)',aLine)
        n = re.search('\<expl\>(.*\;)',a)
        if(m !=None):
            print m.group()
        if(n !=None):
            print n.group()
    else:
        done =1
file.close()

其中字符串a的内容是文件‘a_out.xml’中的一行。问题是为什么我的m没有匹配到,但是n匹配到了?
就是说我用字符串去匹配是没问题的,但读一行文件去匹配却又问题,谢谢!
是不是要加 re.S 参数。表示可以处理多行。要不就是re.M参数,试试就知道了。建议先使用re.compile处理。


QUOTE:
原帖由 limodou 于 2006-3-16 20:42 发表
是不是要加 re.S 参数。表示可以处理多行。要不就是re.M参数,试试就知道了。建议先使用re.compile处理。

依您的意思,修改成如下:

[Copy to clipboard] [ - ]
CODE:
        m = re.compile('\<expl\>(.*\;)',re.M|re.S).search(aLine)
        n = re.compile('\<expl\>(.*\;)',re.M|re.S).search(a)

或者:

[Copy to clipboard] [ - ]
CODE:
        r =re.compile('\<expl\>(.*\;)',re.M|re.S)
        m = re.search(r,aLine)
        n = re.search(r,a)

结果还是一样的,是不是我读文件的方法不对?
采用
a = file('test.htm').read(),然后再使用re.S,re.M就可以了,谢谢limodou大侠!