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',
答案 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)
也有效。只是不得不摆脱''