繁体   English   中英

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

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM