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

python regex查找至少包含一个字母的字母数字字符串

  •  2
  • MJB  · 技术社区  · 6 年前

    我试图找出正则表达式的语法,它将匹配4个字母数字字符,其中至少有一个字母。每个包装应采用: > < 但我不想退回尖括号。

    re.findall 在字符串上 >ABCD<>1234<>ABC1<>ABC2 它应该会回来 ['ABCD', 'ABC1']

    1234 -没有信

    ABC2 -不是用尖括号括起来的

    2 回复  |  直到 6 年前
        1
  •  5
  •   anubhava    6 年前

    您可以在python中将这个基于lookahead的regex用于 findall

    (?i)>((?=\d*[a-z])[a-z\d]{4})<
    

    RegEx Demo

    代码:

    >>> regex = re.compile(r">((?=\d*[a-z])[a-z\d]{4})<", re.I)
    >>> s = ">ABCD<>1234<>ABC1<>ABC2"
    >>> print (regex.findall(s))
    ['ABCD', 'ABC1']
    

    正则表达式详细信息:

    • re.I :启用忽略大小写修饰符
    • > :匹配文字字符 >
    • ( :启动捕获组
      • (?=\d*[a-z]) :Lookahead断言0或更多数字后至少有一个字母
      • [a-z\d]{4}
    • ) :结束捕获组
    • < :匹配文字字符 <
        2
  •  0
  •   M Sandler    6 年前
    import re
    sentence = ">ABCD<>1234<>ABC1<>ABC2"
    pattern = "\>((?=[a-zA-Z])(.){4})\<"
    m = [m[0] for m in re.findall(pattern, sentence)]
    #outputs ['ABCD', 'ABC1']