re模块正则表达式
正则表达式
1、举例:
#re校验
import re
while True:
phone_number = input('请输入手机号码:').strip()
# 需求: 11位、开头13/14/15/19
# 参数1: 正则表达式 ''
# 参数2: 需要过滤的字符串
# ^: 代表“开头”
# $: 代表“结束”
# |: 代表“或”
# (13|14): 可以获取一个值,判断是否是13或14.
# {1}: 需要获取1个值 限制数量
# []: 分组限制取值范围
# [0-9]: 限制只能获取0——9的某一个字符。
if re.match('^(13|14|15|19)[0-9]{9}$', phone_number):
print('合法')
break
else:
print('不合法')
记忆点的内容
'''
- 元字符:
*******根据博客的表格来记 (看一眼)
https://images2015.cnblogs.com/blog/1036857/201705/1036857-20170529203214461-666088398.png
- 组合使用
- \w\W: 匹配字母数字下划线与非字母数字下划线,匹配所有。
- \d\D: 无论是数字或者非数字都可以匹配。
- \t: table
- \n: 换行
- \b: 匹配单词结尾,tank jasonk
- ^: startswith
- '^'在外面使用: 表示开头。
- [^]: 表示取反的意思。
- $: endswith
- ^$: 配合使用叫做精准匹配,如何限制一个字符串的长度或者内容。
- |: 或。ab|abc如果第一个条件成立,则abc不会执行,怎么解决,针对这种情况把长的写在前面就好了,一定要将长的放在前面。
- [^...]: 表示取反的意思。
- [^ab]: 代表只去ab以外的字符。
- [^a-z]: 取a-z以外的字符。
'''
import re
re 模块三种比较重要的方法:
findall():可以匹配“所有字符”,拿到返回的结果,返回的结果是一个列表
search():在匹配一个字符成功后,拿到结果后结束,不往后匹配。
match()从匹配字符的开头匹配,若开头不是,则返回。
举例:
import re
str1 = 'sean tank json'
# findall
# res = re.findall('[a-z]{4}', str1)
# print(res) # ['sean', 'tank', 'json']
res = re.search("[a-z]{4}",str1)
print(res) #<re.Match object; span=(0, 4), match='sean'>
print(res.group()) #sean