You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python正则匹配字符串时出现FutureWarning: Possible nested set报错原因咨询

警告原因解析

你写的正则表达式pattern=r'[[\w][-_]]{5,}'存在嵌套字符集的写法:外层字符集[]内部又嵌套了[\w]和[-_]两个子字符集,形成[[\w][-_]]的结构。Python的re模块在新版本中会将这种写法判定为潜在的语法不规范(当前版本会兼容解析为[\w-_],即匹配单词字符、连字符或下划线),但未来版本会严格规范字符集的语法规则,因此抛出FutureWarning提醒你修正写法。

额外提示:你的正则未满足需求

需要注意的是,当前的正则完全不符合你“至少5个单词,单词间以-或_分隔”的验证要求——它只是匹配5个及以上的单词字符、连字符或下划线的任意组合,比如aaaaa、-----这类不符合单词分隔结构的字符串都会被匹配。

正确的正则及代码

要实现需求,正确的正则应该匹配“单词+分隔符+单词”的重复结构,确保总单词数≥5:

import re
password = input('Password:')
# 正则解释:开头是1个单词,后续至少4次「分隔符+单词」,确保总单词数≥5
pattern = r'^\w+(?:[-_]\w+){4,}$'
is_valid = re.fullmatch(pattern, password) is not None
print(is_valid)

说明:

  • ^\w+:匹配第一个单词(至少1个字母/数字/下划线)
  • (?:[-_]\w+){4,}:非捕获组,匹配「连字符/下划线+单词」的结构至少4次,加上第一个单词后总单词数≥5
  • $:匹配字符串结尾,确保整个字符串都符合规则
  • 移除了eval(input(...)),eval存在安全风险,直接用input()即可获取输入字符串

内容的提问来源于stack exchange,提问作者jemmitbliss

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 14:25:25