gpt4 book ai didi

Python 正则表达式匹配包含字母和数字的 8 个字符的字符串

转载 作者:行者123 更新时间:2023-12-05 04:56:30 25 4
gpt4 key购买 nike

我正在尝试使用 re.findall 匹配长度为 8 的字符串,其中包含数字和字母(不能只有数字或字母)。该字符串可以以字母或字母开头,后跟任意组合。

例如-

输入字符串:引用编号是 896av6uf 而不是 87987647 或 ahduhsjs 或 hn0。

输出:['896av6uf','a96bv6u0']

我想到了这个正则表达式 r'([a-z]+[\d]+[\w]*|[\d]+[a-z]+[\w]*)'但是它也给了我少于 8 个字符的字符串。需要修改正则表达式以返回恰好包含字母和字母表的 8 个字符的字符串。

最佳答案

你可以使用

\b(?=[a-zA-Z]*[0-9])(?=[0-9]*[a-zA-Z])[a-zA-Z0-9]{8}\b
\b(?=[^\W\d_]*\d)(?=\d*[^\W\d_])[^\W_]{8}\b

第一个只支持 ASCII 字母,而第二个支持所有 Unicode 字母和数字,因为 [^\W\d_] 匹配任何 Unicode 字母和 \d匹配任何 Unicode 数字(因为 re.UNICODE 选项在 Python 3.x 中默认使用)。

详细信息:

  • \b - 单词边界
  • (?=[a-zA-Z]*[0-9]) - 在任何 0+ 个 ASCII 字母之后,必须有一个数字
  • (?=[0-9]*[a-zA-Z]) - 在任何0+位之后,必须有一个ASCII字母
  • [a-zA-Z0-9]{8} - 八个 ASCII 字母数字字符
  • \b - 单词边界

关于Python 正则表达式匹配包含字母和数字的 8 个字符的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64917822/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com