Python:regex re.compile(r'^ [ - \ w] + $')如何搜索?或者,正则表达式如何在这种情况下工作?

时间:2010-01-27 20:07:20

标签: python regex

通过阅读文档here,在我看来

re.compile(r'^[-\w]+$')

只会搜索是否有任何字母数字,下划线或连字符。但实际上只有当所有字符符合该描述时才会返回匹配(即,如果有空格或美元符号或星号等,则会失败)。

我真的不明白这是如何检查所有字符的时候说的:

  

“'*','+'和'?'限定词都是贪婪的;它们匹配尽可能多的文本。“

这是不是意味着如果第6个字符中有空格字符,它将尽可能匹配,然后停止并返回它在前5个字符中找到的匹配(而不是说“对不起,我找到了什么“基本上当它达到不匹配时”。

提前致谢(我在正则表达式上非常棒,每次我再次学习它时我都会感到困惑)。

3 个答案:

答案 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
>>>