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

检查字符串是否匹配Python中模式的regex列表

  •  -3
  • JokerMartini  · 技术社区  · 7 年前

    如何测试字符串 June 对给定列表中的任何regex模式都测试True,同时忽略大小写敏感度。我用python来做这个。

    ['Ju*','October'] = True
    ['june','November'] = True
    ['*u*','October'] = True
    ['Junee','October'] = False
    ['October']` = False
    ['*'] = True
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   JokerMartini    7 年前

    干得好:

    def doesMatchPattern(self, string, patterns=[]):
        for p in patterns:
    
            # skip empty patterns
            if not p: continue
    
            # construct regex pattern
            pattern = '^{}$'.format(p.lower())
            if '*' in pattern:
                pattern = pattern.replace('*', '[^\\s]*')
    
            if re.match(pattern, string, re.I):
                return True
    
        return False
    
    print doesMatchPattern('june', ['Ju*'])
    print doesMatchPattern('june', ['june'])
    print doesMatchPattern('june', ['*u*'])
    print doesMatchPattern('june', ['Junee'])
    print doesMatchPattern('june', ['October'])
    print doesMatchPattern('june', ['*'])