【发布时间】:2022-01-07 17:02:21
【问题描述】:
我是 python 编程的新手,我正在尝试一些挑战来改进我的编码;我遇到以下正则表达式:(r"^[a-zA-Z][\w_]{2,23}[^_]$").
做了一些研究,我明白这一点:
r" = 表达式是一个原始字符串(不确定这完全是什么意思)
^[a-zA-Z] = 这告诉我字符串必须以字母开头
[\w_]{2,23} = 从val[2] 到val[23] 的字符串主体必须是字母数字
[^_]$ = 结尾必须是下划线
如果我的研究是正确的,我不明白为什么 [\w_] 上包含下划线。我认为字母数字必须只有[\w].
如果我错了,请帮我澄清一下。
【问题讨论】:
-
更正 ->
[\w_]{2,23}= 接下来必须有一个长度在 2 到 23 之间的字母数字字符串。 -
[\w_]= 字母数字或下划线;方括号定义了一个与其中列出的任何内容相匹配的字符集。[^_]= 任何除了下划线;插入符号作为集合的第一个字符会否定它。 -
@jasonharper
\w并不意味着“字母数字”。检查docs。 -
@Evergreen 是对的;我需要更正我的研究。我很抱歉。
-
您是否正在寻找有关所有点的确认信息?如果是这样,那对于堆栈溢出问题来说太宽泛了;相反,请一次只问一个具体问题,但一定要提供上下文的所有细节。您阅读过
remodule 的文档吗?它解释了所有语法以及为什么要使用原始字符串。此外,如果您想要原始字符串演示,see the tutorial。有关更多提示,请参阅How to Ask。 [我之前对此效果的评论已被删除,我不知道为什么。]