[英]how to use a variable instead of a string inside regex search function in python
[英]How to use regex search to search a variable value
我有多行,我只需要選擇那些包含特定值的行。 例如,
[DEBUG] 2014-12-01 16:39:12,049 [1984] Agent Logger Initialized
[DEBUG] 2014-12-01 16:39:12,049 [2884] Agent Logger Initialized
[DEBUG] 2014-12-01 16:39:12,049 [2884] Agent Actuation Logger Initialized
所以我有一個變量為var = 1984。
id=re.search(r'\[var\],s,re.I|re.M|re.S)
if id:
print line
上面的正則表達式只能搜索var = 1984,並且應該打印包含該值“ [1984]”的行。有人可以建議如何做嗎?我需要在Linux中搜索,我正在使用Python 2.6。
這個正則表達式應該工作:
var=1984
reg = '.+'+str(var)+'.+'
id=re.search(reg,s,re.I|re.M|re.S)
或簡單地說:
import re
s = ['[DEBUG] 2014-12-01 16:39:12,049 [1984] Agent Logger Initialized',
'[DEBUG] 2014-12-01 16:39:12,049 [2884] Agent Logger Initialized',
'[DEBUG] 2014-12-01 16:39:12,049 [2884] Agent Actuation Logger Initialized']
var = 1984
for line in s:
id = re.findall(r'.+%d.+' % var, line, re.I | re.M | re.S)
if id:
print line
輸出:
[DEBUG] 2014-12-01 16:39:12,049 [1984] Agent Logger Initialized
您也可以使用簡單的if
條件進行操作:
from io import StringIO
text = StringIO(u"""\
[DEBUG] 2014-12-01 16:39:12,049 [1984] Agent Logger Initialized
[DEBUG] 2014-12-01 16:39:12,049 [2884] Agent Logger Initialized
[DEBUG] 2014-12-01 16:39:12,049 [2884] Agent Actuation Logger Initialized
""")
for line in text:
if '[1984]' in line:
print line
[DEBUG] 2014-12-01 16:39:12,049 [1984] Agent Logger Initialized
這應該工作:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import re
var = '\[1984\]'
with open("test.log") as fp: # assuming your log file is test.log
lines = fp.readlines()
for line in lines:
line = line.strip()
if re.match(r'.*'+str(var)+'.*',line): # may be you want to add some more strict matching rules here.
print line
# vim:ai:et:sts=4:sw=4:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.