题目描述
密码要求:
1.长度超过8位
2.包括大小写字母.数字.其它符号,以上四种至少三种
3.不能有相同长度超2的子串重复
说明:
长度超过2的子串重复,如021Abc9Abc1,其中Abc重复了两次
输入描述:
一组或多组长度超过2的子符串。每组占一行
输出描述:
如果符合要求输出:OK,否则输出NG
示例1
输入
021Abc9000
021Abc9Abc1
021ABC9000
021$bc9000
输出
OK
NG
NG
OK
题解:
思路:本题的思路其实还是比较清晰的,每个密码规则都需要分别做判断,难就难在对正则表达式的理解和使用(python中re模块)
通过一个例子来简单了解下常用的正则表达式
import re
s = 'aaabhh\nacbccd\na\nbbdffabggb'
#a.b释义:a+任意字符+b(任意字符不包括\n)
print(re.findall(r'a.b', s)) #输出['aab', 'acb']
#a*b释义:0个或多个a+b(*是贪婪方式的匹配,即选取尽可能长的匹配字符)
print(re.findall(r'a*b', s)) #输出['aaab', 'b', 'b', 'b', 'ab', 'b']
#a.*b释义&#