[英]python regex using re.compile and match
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',
我用的是:
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'"
你的正则表达式非常混乱。
我试图解决它:
rpat = re.compile(r"^\s*%s\s*=\s*(r'.*')\s*" % eag)
你忘了r
匹配r'LIN'
被遗忘尾随空格。
rpat = re.compile("^\\s*%s\\s*=\\s*(.*\\')" % eag)
也可以。 只是不得不摆脱''
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.