使用re.compile和match的python正则表达式

时间:2013-08-28 17:15:36

标签: python regex

eag = 'linux'
rpat = re.compile("^\s*%s\s*=\s*('.*\'')" % eag)

尝试在文本文件r'^LIN'

中的一行中抓取linux = r'^LIN',
lines = [line.strip() for line in open (myfile, 'r')]
for line in lines:
    if re.match(rpat, line)
        matched = re.match(rpat,line)
        got_it = matched.group(1)
        # do something here

我的rpat是否正确不太确定 在linux的前面有一些空间然后是一些空间,直到=然后一些空间r'^ LIN',

3 个答案:

答案 0 :(得分:2)

我会用:

re.compile("^\s*%s\s*=\s*(r'[^']+')" % re.escape(eag))

这也与你省略的r相匹配。

演示:

>>> import re
>>> sample = "linux = r'^LIN',"
>>> eag = 'linux'
>>> rpat = re.compile("^\s*%s\s*=\s*(r'[^']+')" % re.escape(eag))
>>> rpat.match(sample).group(1)
"r'^LIN'"

答案 1 :(得分:1)

你的正则表达式非常混乱。

我试图修复它:

rpat = re.compile(r"^\s*%s\s*=\s*(r'.*')\s*" % eag)

您忘记了r以匹配r'LIN'并忘记了尾随空格。

答案 2 :(得分:0)

rpat = re.compile("^\s*%s\s*=\s*(.*\')" % eag)也有效。只是不得不摆脱''