通过阅读文档here,在我看来
re.compile(r'^[-\w]+$')
只会搜索是否有任何字母数字,下划线或连字符。但实际上只有当所有字符符合该描述时才会返回匹配(即,如果有空格或美元符号或星号等,则会失败)。
我真的不明白这是如何检查所有字符的时候说的:
“'*','+'和'?'限定词都是贪婪的;它们匹配尽可能多的文本。“
这是不是意味着如果第6个字符中有空格字符,它将尽可能匹配,然后停止并返回它在前5个字符中找到的匹配(而不是说“对不起,我找到了什么“基本上当它达到不匹配时”。
提前致谢(我在正则表达式上非常棒,每次我再次学习它时我都会感到困惑)。
答案 0 :(得分:4)
两个字符^
和$
分别标记字符串的开头和结尾。因此^[-\w]+$
只会在开头([-\w]+
)和字符串结尾(^
之间只有一个或多个字符或连字符($
)时匹配)。
答案 1 :(得分:3)
^
和$
将正则表达式锚定在字符串的开头和结尾处,因此所有字符必须与之间的模式匹配。
答案 2 :(得分:2)
就像上面的答案一样,^和$包含其间的所有字符,它们分别代表行的开始和结束。如果有任何疑问,请尝试调试模式,这通常可以解释很多:
>>> p = re.compile("^[-\w]+$", re.DEBUG)
at at_beginning
max_repeat 1 65535
in
literal 45
category category_word
at at_end
>>>