正则表达式模式与代码不匹配

时间:2016-03-18 08:43:03

标签: python regex

我正在尝试在文本文件中匹配表示最大文件大小的字符串。我正在使用Python 3.4.3和正则表达式。我在Pythex编辑器中http://pythex.org/测试了模式。模式有效,但是当我用python测试时,我什么都没得到,m返回None,就像没有执行匹配一样!

Userspace_info.txt

Filestorage information
{
  Size in kilobyte            : 768
  Size in byte                : 786432
  Maximum filesize is         : 782336
  Used                        : No (marked as empty or invalid)
}

Python代码

import re
Userspace="Userspace_info.txt"
Form =r"\s{1,}Maximum filesize is \s{1,}:?\s*([0-9]{1,})"
p = re.compile(Form) 
m = p.match(Userspace)
print (m)
if m != None:
   A= m.group()
   print (A)
else:
print("couldnt find the Maximal userspace memory size")

2 个答案:

答案 0 :(得分:0)

您可以使用以下方式打开文件内容:

open(Userspace).read()

您应该将其传递到match

m = p.match(open(Userspace).read())

答案 1 :(得分:0)

Userspace是文件的名称,而不是内容。首先,您必须open该文件,然后将正则表达式与各行匹配。

import re
with open("Userspace_info.txt") as Userspace:
    Form =r"\s{1,}Maximum filesize is \s{1,}:?\s*([0-9]{1,})"
    p = re.compile(Form) 
    for line in Userspace:
        m = p.match(line)
        if m != None:
           A= m.group()
           print (A)
           break
    else:
        print("couldnt find the Maximal userspace memory size")

这使用for/else循环,即只有在循环正常结束时才会打印最终的print行,即如果break尚未触发。