正则表达式

1.正则中的匹配模式

参考菜鸟教程:菜鸟教程正则表达式

2.正则中的常用的函数

1)re.match,从字符串的开始匹配,匹配返回match object,否则返回None

2)re.search,从字符串中查找,匹配返回match object,否则返回None

3)re.compile,将编译对象得使用

4)re.findall,查找出所有符合正则表达式规范的字符串,并且作为一个列表返回

5)re.split 返回的是一个列表,用来补充字符串的split方法

s = 'python:php,java'
result = s.split(':')
print(result)
result = re.split('[:,]', s)
print(result)

6)re.finditer返回的是一个可迭代对象

7)re.sub 字符串的替换

8)正则中的非贪婪模式,是在贪婪模式的后面加上一个?,表示尽可能少的匹配,而贪婪模式则相反。

3.举例说明

1.判断手机号是否合法

```
def check_phone(n='18000120232'):
"""
检测手机号格式, 合法格式为 总长11位,
必须以1开头 ,第二位只能是3,5,8。
:param n: 手机号
:return: True or False
"""
result = re.match('1[358]\d{9}$', n)
# result = re.search('^1[358]\d{9}$', n)
return result is not None
```

2.判断邮箱是否合法

def check_mail(m='Geek@gmail.con'):
"""
检测邮箱地址格式
合法格式为 6~18个字符,可使用字母、数字、下划线,
必须以字母开头,以.com或.cn结尾。
xxx@yy.com
:param m:邮箱
:return:
"""
len_m = len(m)
if len_m < 6 or len_m > 18:
return False
result = re.match('[A-Za-z]\w*@\w+\.(com|cn)', m)
# result = re.match('[A-Za-z]\w{5,17}@\w+\.(com|cn)', m)
return result is not None

3.判断密码是否合法

def check_passwd(p='123@fj3'):
"""
检测密码是否合法 6到8个字符,不能为纯数字,如 不可以为101212
:param p:
:return:
"""
len_p = len(p)
if len_p < 6 or len_p > 8:
return False
# 如果是纯数字,那么也可以排除
# if p.isdigit():
# return False
ret = re.match('\d+$', p)
if ret:
return False
# 其他的都是正确的
return True

4.使用正则表达式将以下字符串转为字典

sdict = """

    name=eric
age=18
class="python"
from=china
phone=199083424032
"""
import json
def str2dict(str_a):
pattern = '(?P<key>\w+)=(?P<value>\w+)'
ret = re.sub(pattern, '"\g<key>":"\g<value>",', str_a)
ret = ret[:-2]
ret = "{" + ret + "}"
  ret = json.loads(ret)
return ret

  
posted @ 2018-11-26 10:49  茶色阳光  阅读(135)  评论(0编辑  收藏  举报