首页 > 解决方案 > Python 正则表达式匹配第一个和最后一个字符

问题描述

注意事项:避免在这里阅读我的字符串,我会将有趣的部分加粗,我知道这是一团糟。

我正在尝试在

"jashdgfkldsuvha sjdgjhayaluiegfasdgfguiasdgo"

它以字符“a”开头并以字符“l”结尾(即小写L)。具体来说,我想要一个非贪婪的搜索。

如果我跑

re.findall("(a.*?l)", "jashdgfkldsuvha sjdgjhayaluiegfasdgfguiasdgo")

它返回:

['ashdgfkl', 'a sjdgjhayal']

但请注意,在字符串中,我们按顺序排列了字母“al”:

"jashdgfkldsuvha sjdgjhay al uiegfasdgfguiasdgo"

我不是正则表达式的专家,所以我认为也许,即使 * 应该允许匹配零个字符,这里的零匹配也不起作用。所以让我们在这个“al”之间添加一些字符来得到

"jashdgfkldsuvha sjdgjhay ajkdl uiegfasdgfguiasdgo"

但它仍然只返回

['ashdgfkl', 'a sjdgjhayajkdl']

这里发生了什么?为什么正则表达式对这个特定的“a”和“l”有仇杀?

标签: pythonregex

解决方案


推荐阅读