簡體   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