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)
标志分别将^
和$
的含义更改为行的开始和结束。