Python:正则表达式如何重新编译(r';^[-\w]+;$';)搜索?或者,正则表达式在这种情况下是如何工作的?

Python:正则表达式如何重新编译(r';^[-\w]+;$';)搜索?或者,正则表达式在这种情况下是如何工作的?,python,regex,Python,Regex,通过阅读文档,我觉得 re.compile(r'^[-\w]+$') 只需搜索是否存在字母数字、下划线或连字符。但实际上,只有当所有字符都符合该描述(即,如果有空格、美元符号或星号等)时,才会返回匹配 我真的不明白当它说: “*”、“+”和“?”限定符都是贪婪的;它们匹配尽可能多的文本。” 这是否意味着,如果第6个字符中有空格字符,它将尽可能匹配,然后停止并返回在前5个字符中找到的匹配项(而不是在到达不匹配项时说“对不起,我找不到任何东西”) 提前感谢(我在正则表达式中是个不速之客,每次我再次

通过阅读文档,我觉得

re.compile(r'^[-\w]+$')
只需搜索是否存在字母数字、下划线或连字符。但实际上,只有当所有字符都符合该描述(即,如果有空格、美元符号或星号等)时,才会返回匹配

我真的不明白当它说:

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

这是否意味着,如果第6个字符中有空格字符,它将尽可能匹配,然后停止并返回在前5个字符中找到的匹配项(而不是在到达不匹配项时说“对不起,我找不到任何东西”)


提前感谢(我在正则表达式中是个不速之客,每次我再次学习它,我都会感到困惑)。

在字符串的开头和结尾锚定正则表达式,因此,所有字符都必须匹配中间的模式。

这两个字符分别标记字符串的开始和结束。因此,
^[-\w]+$
只有在字符串的开头(
^
)和结尾(
$
)之间只有一个或多个单词字符或连字符(
[-\w]+
)时才会匹配。

就像上面的答案一样,^和$将所有字符括在中间,它们分别代表行的开始和结束。如果您对任何表达式有疑问,请尝试调试模式,这通常可以解释很多问题:

>>> p = re.compile("^[-\w]+$", re.DEBUG)
at at_beginning
max_repeat 1 65535
  in
    literal 45
    category category_word
at at_end
>>>

因此,^start和$end字符指定所有内容都必须与VS[-\w]+匹配,VS[-\w]+将尽可能匹配,但在不匹配时停止。我想我现在明白了。@orokusaki:要匹配,必须满足以下条件:1)
^
[-\w]+$
:字符串必须有开头2)
^
[-\w]+
$
:之后,必须有一个或多个字符是连字符或单词字符3)
[-\w]+
$
:之后必须有字符串的结尾。实际上,只有
\A
\Z
保证表示“在字符串的开头和结尾匹配”;
re.MULTILINE
/
(?m)
标志分别将
^
$
的含义更改为行的开始和结束。