代码之家  ›  专栏  ›  技术社区  ›  Umair

如何认可字符串是否是某个内容的版本?

  •  0
  • Umair  · 技术社区  · 6 年前

    packaging.version.Version 它不适用于 1.0.2h 192.168.0.3 .

    问题

    请推荐一个逻辑或python库,它可以完成以下操作

    Correct_verList = []
    
    verList = ['2.6.36', '1.2.dfgdf', '1.sdfsdgsdsf', '3.0/0+3*/1,-/0/0,//O*K1', 'so.802', '5.0(side)', '6.2*20hm' , '192.168.0.222', '1.33', '0.97a', '1.0.2h', '2.4.2b3']
    
    #Psuedo Code
    for ver in verList: 
        if ver is the correct version:
             Correct_verList.append(ver)
    
    print(Correct_verList)
    

    Correct_verList = [1.33, 0.97a, 2.6.36, 1.0.2h, 2.4.2b3]
    
    0 回复  |  直到 6 年前
        1
  •  0
  •   TUI lover    6 年前

    你要找的东西叫做 regular expression . 此链接为您提供有关python正则表达式的文档。

    '(([0-9]+[.]){1,2}([0-9]*([0-9]|[a-z]){0,2}[0-9]+)'

    你能做的就是使用 findall()

    import re
    Correct_verList = []
    
    verList = ['2.6.36', '3.0/0+3*/1,-/0/0,//O*K1', 'so.802', '5.0(side)', '6.2*20hm' , '192.168.0.222', '1.33', '0.97a', '1.0.2h', '2.4.2b3']
    
    for ver in verList:
        a=re.findall('(([0-9]+[.]){1,2}([0-9]*([0-9]|[a-z]){0,2}[0-9]+)',ver)
        if len(a)!=0:
           if a[0][0]==ver:
               Correct_verList.append(ver)
    print(Correct_verList)