1
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',

4

3 回答 3

2

我会使用:

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

r也与您省略的 the 相匹配。

演示:

>>> 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'"
于 2013-08-28T17:27:53.900 回答
1

你的正则表达式很乱。

我试图修复它:

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

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

于 2013-08-28T17:29:12.973 回答
0

rpat = re.compile("^\s*%s\s*=\s*(.*\')" % eag)也可以。只需要摆脱''

于 2013-08-28T17:37:42.807 回答