python 正则表达式\w{3,}和(\w){3,}区别具体在哪的?

1个月前

a="aa  bcbdbdcb  c  ddd"

reg=re.findall('\w{3,}',a)

reg2=re.findall('(\w){3}',a)

print(reg)

print(reg2)

输出结果为:

['bcbdbdcb', 'ddd']

['b', 'd', 'd']

\w{3,}和(\w){3,}区别具体在哪的?  加括号是分组的意思,那这个例子分组后具体有什么区别呢?谢谢!!!


https://m.teaku.com/20/1581760947618124.html

网友评论

  • \w是匹配字母/数字的,以下字符就表示字母或数字

    \w{3,} 表示匹配3个以上(至少3个)字符

    对你的字串a,因为aa和c只有一个字符,不符合条件,所以只能匹配到 'bcbdbdcb'和 'ddd'

    若是\w{3}就是匹配3个字符,应该会匹配到 'bcb', 'dbd', 'ddd'

    若是\w{,3}就是最多字符,会匹配到 'aa', '', '', 'bcb', 'dbd', 'cb', '', '', 'c', '', '', 'ddd', ''(0个也算的)

    若是\w{1,3}就是至少1个,最多3个,结果'aa', 'bcb', 'dbd', 'cb', 'c', 'ddd'

    而你的(\w){3},要注意(),它相对复杂,它是分组匹配,在一个表示匹配3个连续字符的第一个

    bcbdbdcb中,连续的3个字符为bcb,dbd(从前面匹配),所以是'b','d'加上最后的'ddd'为'd'

    所以结果为

    'b', 'd', 'd'