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}
这是两个字符类,第二个字符类带有重复说明符后缀:
总的来说,您匹配的是1+[3,10]个字符。您的最小匹配将是4个字符,最大匹配将是11个。您的匹配长度范围为4到11个字母。
{3,10}
量词(即至少三个且不超过十个)仅适用于第二个字符集。感谢您的评论。对不起,我输入了8而不是11,输入了7而不是10。我已经在我的问题中解决了这个问题