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