2015-05-16 87 views
1

我需要匹配一個文件行尾部的字符串。Python的正則表達式:如何匹配文件中行尾的字符串?

文件的內容是:

network1: 
    type: Internal 

我做了這個正則表達式來獲取第一線,但它不匹配任何東西。請注意,我的代碼的要求是要匹配的字符串存儲在一個變量中。因此:

var1 = 'network1' 
re.match('\s+%s:'%var1,line) 

但是,當我在解釋器上檢查這個正則表達式,它的工作原理。

>> import re 
>> line = ' network1:' 
>> var1 = 'network1' 
>> pat1 = re.match('\s+%s:'%var1,line) 
>> var2 = pat1.group(0) 
>> print var2 
    ' network1:' 

回答

3

您需要使用re.search函數,因爲match會嘗試從頭開始匹配字符串。

var1 = 'network1' 
print(re.search(r'.*(\s+'+ var1 + r':)', line).group(1)) 

例子:

>>> import re 
>>> s = 'foo network1: network1:' 
>>> var1 = 'network1' 
>>> print(re.search(r'.*(\s+'+ var1 + r':)', s).group(1)) 
network1: 
>>> print(re.search(r'.*(..\s+'+ var1 + r':)', s).group(1)) # to check whether it fetches the last string or not. 
1: network1: 

所以,你應該做的像

with open(file) as f: 
    for line in f: 
     if var1 in line: 
      print(re.search(r'.*(\s+'+ var1 + r':)', s).group(1)) 
相關問題