首页 > 解决方案 > python 正则表达式查找至少包含一个字母的字母数字字符串

问题描述

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

例如,re.findall在字符串上使用时,>ABCD<>1234<>ABC1<>ABC2它应该返回['ABCD', 'ABC1'].

1234- 没有字母

ABC2- 没有用尖括号包裹

标签: pythonregexpython-3.x

解决方案


您可以在 python 中使用这个基于前瞻的正则表达式findall

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

正则表达式演示

代码:

>>> 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]): 提前断言我们在 0 个或多个数字之后至少有一个字母
    • [a-z\d]{4}: 匹配 4 个字母数字字符
  • ): 结束捕获组
  • <: 匹配文字字符<

推荐阅读