繁体   English   中英

如何使用正则表达式搜索来搜索变量值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM