Python 正则表达式-匹配的范围

Python 正则表达式-匹配的范围,python,regex,Python,Regex,我有以下正则表达式: re.findall(r'(\b[A-Za-z][a-z]{3,10}\b)', string_var) 我希望这个正则表达式将返回长度从3到10的匹配项。但是,它返回从4到11长度范围内的单词的匹配项 因此,我们是否将上述正则表达式理解为匹配以大写字母或小写字母开头,然后是长度从3到10的字母?换句话说,将第一个字母作为扩展范围的额外字母 谢谢。是的 你的正则表达式是 (\b[A-Za-z][a-z]{3,10}\b) 现在,分组参数不会影响匹配,因此我们可以忽略它们

我有以下正则表达式:

re.findall(r'(\b[A-Za-z][a-z]{3,10}\b)', string_var)
我希望这个正则表达式将返回长度从
3
10
的匹配项。但是,它返回从
4
11
长度范围内的单词的匹配项

因此,我们是否将上述正则表达式理解为匹配以大写字母或小写字母开头,然后是长度从
3
10
的字母?换句话说,将第一个字母作为扩展范围的额外字母

谢谢。

是的

你的正则表达式是

(\b[A-Za-z][a-z]{3,10}\b)
现在,分组参数不会影响匹配,因此我们可以忽略它们。而
\b
是一个“零宽度”匹配运算符-它匹配从一个字符类到另一个字符类的转换-因此它实际上不对应任何字符。我们可以忽略它们。剩下的是:

[A-Za-z][a-z]{3,10}
这是两个字符类,第二个字符类带有重复说明符后缀:

  • [A-Za-z]-匹配一个字符,大写或小写拉丁字母

  • [a-z]{3,10}-匹配至少3个,最多10个字符,小写a-z


  • 总的来说,您匹配的是1+[3,10]个字符。您的最小匹配将是4个字符,最大匹配将是11个。

    您的匹配长度范围为4到11个字母。
    {3,10}
    量词(即至少三个且不超过十个)仅适用于第二个字符集。感谢您的评论。对不起,我输入了8而不是11,输入了7而不是10。我已经在我的问题中解决了这个问题