bitbake源码剖析utils.py ---explode_version


                               
               
                digits = "0123456789"
ascii_letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
import re
// example s = "foo_1.0.bb"
// r = explode_version(s) = ['foo','1','0','bb']
def explode_version(s):
    r = []
    alpha_regexp = re.compile('^([a-zA-Z]+)(.*)$') //以字母开头
    numeric_regexp = re.compile('^(\d+)(.*)$')//以数字开头(0-9)
    while (s != ''):
        if s[0] in digits:
            m = numeric_regexp.match(s)
            r.append(int(m.group(1)))// group(1)放进r中
            s = m.group(2)//剩下的部分作为s继续处理
            continue
        if s[0] in ascii_letters:
            m = alpha_regexp.match(s)
            r.append(m.group(1))  //同上
            s = m.group(2)
            continue
        s = s[1:]//如果不是数字或者字母,那么就略过,继续处理
    return r