[英]Python Challenge Lvl 3 Explaination (warning spoilers!)
我正在做Python挑战,尽管我想出了一个谜题的答案,但我还是用一种不太擅长的方式做了。 前进后,我可以看到以下解决方案:
string1 = open('text.txt').read()
print ''.join(re.findall('[^A-Z][A-Z]{3}([a-z])[A-Z]{3}[^A-Z]', string1))
我把它弄乱了一段时间,在这里删除了一个插入符号,看看会发生什么,在那儿改变了一个支撑组。 但是,我只是无法确定为什么这样做。 谁能以一种易于理解的方式解释它?
谢谢!
([az])
捕获一个小写字母。
[AZ]{3}
匹配3个大写字母(在两侧)。
[^AZ]
确保没有第4个大写字母( “完全是3” )。
[^ AZ]不是大写字母的字符
[AZ] {3}三个大写字母
您匹配的([az])小写字母
重复前两个。
我将模式编译为冗长,以包含嵌入式注释:
pat = re.compile('''
[^A-Z] # any character except a capital letter
[A-Z]{3} # three capital letters
( # the beginning of a capturing group
[a-z] # one lowercase letter
) # the end of the group
[A-Z]{3} # three capital letters
[^A-Z] # any character except a capital letter
''', re.VERBOSE)
演示:
>>> re.findall(pat, 'AAAAaBBBbBBBBzzZZZxXXXyYYYYwWWWvABCn')
['x', 'v']
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.