2016-06-08 39 views
0

我正在嘗試編寫用於匹配可執行版本號的正則表達式。
它可以通過兩種方式提供:用於匹配可執行版本號的正則表達式

  • MAJOR.MINOR.TINY
  • MAJOR.MINOR.TINY.BUILD_NUMBER

我並不需要解析這些價值,只是檢查是否有匹配。所以,我可以: ^\d+[\.\d+]*$。好的,但是這個正則表達式會匹配5個或更多版本的字符串,例如1.2.3.4.5。此外,它將匹配字符串,如1..2.3。這將是很好的做一些像^[as many digits as you want and only one .]{3,4}$

P.S.當然,如果不匹配,我可以首先檢查^(\d*)\.(\d*)\.(\d*)$,如果不匹配,則檢查^(\d*)\.(\d*)\.(\d*)\.(\d*)$。但也許有更好的(更聰明)的方式來做到這一點。

我用re Python模塊,用於檢查匹配:

import re 

version_regexp = re.compile(r'^\d+[\.\d+]*$') 
versions = ['dsvfsdf', 
      '1.a.3', 
      '1.2.4', 
      '1.4..5.6', 
      '0.3.1', 
      'a.b.c.d', 
      '1,2,3'] 
for i, sample in enumerate(versions): 
    print('Sample[%d]: %s' % (i, True if version_regexp.match(sample) else False)) 

預先感謝您!

回答

4

正則表達式應該像re.compile(r'^\d+(\.\d+){2,3}$')

+0

D'OUH,真的很簡單。謝謝! – sashadereh