使用 Python 模块 re,我想检测文本中至少包含两个字母 (A-Z) 和至少两个数字 (0-9) 的序列,例如,来自文本
“N03FZ467 其他文字 N03671”
恰好应该匹配子字符串“N03FZ467”。
到目前为止我得到的最好的是
(?=[A-Z]*\d)[A-Z0-9]{4,}
检测长度至少为 4 且仅包含字母 A-Z 和数字 0-9 以及至少一位数字和一个字母的序列。 我怎样才能确保我分别得到至少两个?
最佳答案
\b
。(?=(?:\d*[A-Z]){2})
(?:[A-Z]*\d){2}
[A-Z\d]*
直到另一个 \b
。综合:
\b(?=(?:\d*[A-Z]){2})(?:[A-Z]*\d){2}[A-Z\d]*\b
See this demo at regex101或 Python demo at tio.run
请注意,前瞻是零长度断言,它不消耗字符。如果您没有指定起点,例如 \b
,则将在任何效率较低的地方使用先行。
进一步说明,最小长度至少为4个即可满足要求。
https://stackoverflow.com/questions/73915958/