Python正则表达式*只匹配字符串开头的事件
当我在stringPython正则表达式*只匹配字符串开头的事件,python,regex,Python,Regex,当我在stringblackpink上使用regexp*时,它返回空字符串作为匹配项,即使p在字符串中 当我在字符串pinkpink上使用相同的正则表达式p*时,它将匹配并返回p,指示它仅在字符串的开头匹配,即使我没有指定任何类似的内容 特殊的行为是,当我对字符串pink和blackpink使用p+时,在这两种情况下,它都返回p,表示它不关心匹配是在字符串的开头还是内部 有人能解释一下吗?我想你是在用它来寻找你的模式匹配。从文档中可以看到: 如果字符串开头有零个或多个字符,则匹配 正则表达式模式
blackpink
上使用regexp*
时,它返回空字符串作为匹配项,即使p在字符串中
当我在字符串pinkpink
上使用相同的正则表达式p*
时,它将匹配并返回p
,指示它仅在字符串的开头匹配,即使我没有指定任何类似的内容
特殊的行为是,当我对字符串pink
和blackpink
使用p+
时,在这两种情况下,它都返回p
,表示它不关心匹配是在字符串的开头还是内部
有人能解释一下吗?我想你是在用它来寻找你的模式匹配。从文档中可以看到:
如果字符串开头有零个或多个字符,则匹配
正则表达式模式,返回相应的MatchObject
例如
重点矿山
因为,
p*
表示0个或更多字符,所以字符串blackpink
的起点只是一个空字符串,'
,满足您的模式。事实上,模式p*
将为任意两个字符之间的每个空(0长度)字符串返回成功匹配。这里有两件重要的事情需要理解:
- 首先,
匹配零个或多个,而p*
匹配一个或多个p+
- 其次,您将获得第一个匹配项,无论该匹配项是否为空字符串
- 第三,正则表达式在默认情况下是贪婪的,因此一旦找到第一个匹配项,它将包含尽可能多的
p
onp*
匹配字符串开头的零p,即blackpink
'
上的pinkpink
与第一个p*
匹配(而不是第二个)p
上的blackpink
匹配第六个字母p+
,因为p
的原因,空字符串不再匹配+
上的pinkpink
与第一个p+
匹配p
match
中的p+
regex如何返回与blackpink
的匹配?我无法重现这一点。您如何查找匹配项…您使用的是哪个函数re.search()和re.group():re.search(“p+”,“blackpink”)。group()返回“p”,但re.match(“p+”,“blackpink”)
返回无,而不是p
。