print(re.findall(r'[\w-]+@[\w-]+\.[\w-]+', 'weidian@qq.com'))
print(re.findall(r'(?:18|19|(?:[23]\d))\d{2}', '2010')) # 年
print(re.findall(r'(?:0[1-9])|10|11|12', '11')) # 月
print(re.findall(r'(?:[0-2][1-9])|10|20|30|31', '10')) # 日
pattern = re.compile(r"[1-9]\d{5}(?:18|19|(?:[23]\d))\d{2}(?:(?:0[1-9])|10|11|12)(?:(?:[0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]")
print(pattern.findall('342623198910235163'))
#手机号都为11位,且以1开头,第二位一般为3、5、6、7、8、9 ,剩下9位任意数字
# 例如:13987692110、15610098778
print(re.findall(r'1(?:3|5|6|7|8|9)\d{9}', '15610098778')) #
print(re.findall(r'1[356789]\d{9}', '15610098778')) #
#区号34位,号码78位 例如:0511-1234567、021-87654321
print(re.findall(r'\d{3,4}-?\d{7,8}', '0511-1234567')) #
print(re.findall(r'\d{3,4}-?\d{7,8}', '05111234567')) #
pattern = re.compile(r"(?:(?:http:\/\/)|(?:https:\/\/))?(?:[\w](?:[\w\-]{0,61}[\w])?\.)+[a-zA-Z]{2,6}(?:\/)")
print(pattern.findall("Python官网的网址是https://www.python.org/"))
# IP地址的长度为32位(共有2^32个IP地址),分为4段,每段8位,用十进制数字表示
# 每段数字范围为0~255,段与段之间用句点隔开
pattern = re.compile(r"(?:(?:25[0-5]|2[0-4]\d|[01]?\d?\d)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d?\d)")
print(pattern.findall("675.255.255.255"))
print(pattern.findall("2.25.25.255"))
print(pattern.findall("0.0.25.255"))
常见日期格式:yyyyMMdd、yyyy-MM-dd、yyyy/MM/dd、yyyy.MM.dd
# 2013-10-01
pattern = re.compile(r"(?:(?:1\d{3})|(?:20[0-2][0-4]))[-/\.](?:0[1-9]|10|11|12)[-/\.](?:0[1-9]|1\d|2\d|3[0-1])")
print(pattern.findall("出生日期是1999-11-28"))
# 密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线)
pattern = re.compile("[a-zA-Z]\w{5,17}")
print(pattern.findall("密码: nlj20*_cc2042 "))
#强密码(以字母开头,必须包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间)
pattern = re.compile("^(?=.*[a-zA-Z])(?=.*\d)[a-zA-Z\d]{8,10}")
print(pattern.findall("nlj00NLJ"))
pattern = re.compile(r"[\u4e00-\u9fa5]")
print(pattern.findall("apple:苹果"))
pattern = re.compile(r"\b[0-9]+\b")
print(pattern.findall("1234 899 niu 890 009 nihih _ 9090"))
# 验证n位的数字:^\d{n}$
pattern = re.compile(r"\b[0-9]{3}\b")
print(pattern.findall("1234 899 niu 890 009 nihih _ 9090"))
# 验证至少n位数字:^\d{n,}$
pattern = re.compile(r"\b\d{3,}\b")
print(pattern.findall("1234 899 niu 890 009 nihih _ 9090"))
# 验证m-n位的数字:^\d{m,n}$
pattern = re.compile(r"\b\d{3,5}\b")
print(pattern.findall("1234 899 niu 890 009 nihih _ 909000"))
# 验证零和非零开头的数字:^(0|[1-9][0-9]*)$
pattern = re.compile(r"\b[1-9]\d*\b") # 非0开头的数字
print(pattern.findall("1234 899 niu 890 009 nihih _ 909000"))
pattern = re.compile(r"\b0\d*\b") # 非0开头的数字
print(pattern.findall("1234 899 niu 890 009 nihih _ 909000"))
# 验证有两位小数的正实数:^[0-9]+(.[0-9]{2})?$
pattern = re.compile(r"\b[0-9]+(?:\.\d{2})\b") # 非0开头的数字
print(pattern.findall("1234 899 niu 890.01 009 nihih _ 909000"))
# 验证有1-3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$
pattern = re.compile(r"\b[0-9]+(?:\.\d{1,3})\b") # 非0开头的数字
print(pattern.findall("1234 899 niu 890.01 009 nihih _ 909000"))
# 验证非零的正整数:^\+?[1-9][0-9]*$
pattern = re.compile(r"\b[1-9][0-9]*\b") # 非0开头的数字
print(pattern.findall("1234 899 niu 890.01 009 nihih _ 909000"))
# 验证非零的负整数:^\-[1-9][0-9]*$
pattern = re.compile(r"-[1-9][0-9]*\b") # 非0开头的数字
print(pattern.findall("1234 -899 niu 890.01 009 nihih _ -909000"))
11、字符串
pattern = re.compile(r"[a-zA-Z0-9]+") # 非0开头的数字
print(pattern.findall("1234 -899 niu 890.01 009 nihih _ -909000"))
# 长度为3-20的所有字符:^.{3,20}$
pattern = re.compile(r".{3,20}\b") # 非0开头的数字
print(pattern.findall("1234mn"))
matches = re.findall(r'\b(\w*(\w)\2\w*)\b', 'hello world book balloon oop')
for match in matches:
print(match[0])