[Python-12/100] 字符串和正则表达式(Strings and regular expressions)

版权声明:公众号:Fresh Site。QQ群:690274159。转载我的博文时,请附上转载地址,谢谢!^_^我是嘻哈程序猿freshman。 https://blog.csdn.net/wuhongxia29/article/details/90713626

参考资料:Python-100-Days

Day12 字符串和正则表达式

参考资料:
正则表达式30分钟入门教程
在线正则表达式测试
科赛
Pythton官方文档-正则

使用正则表达式

相关知识

定义:工具,字符串匹配模式。
正则思维导图
正则表达式

特殊字符:转义,例:小数点\.,圆括号\(和\)

Python对正则的支持

re模块
Python中re模块核心函数

例子

1.验证用户名和QQ

验证输入用户名和QQ号是否有效并给出对应的提示信息
要求:用户名必须由字母、数字或下划线构成且长度在6-20个字符之间,QQ号是5-12的数字且首位不能为0

import re


def match_qq_nickname():
    """
    验证输入用户名和QQ号是否有效并给出对应的提示信息

    要求:用户名必须由字母、数字或下划线构成且长度在6~20个字符之间,QQ号是5~12的数字且首位不能为0
    """
    # username = input(str('请输入用户名:'))
    username = 'freshman'
    # qq = input('请输入QQ:')
    qq = '1187206700'
    name_match = re.match(r'^[0-9a-zA-Z_]{6,20}$', username)
    # name_match = re.match(r'^\w{6, 20}$', username)
    qq_match = re.match(r'^[1-9]\d{4,11}$', qq)
    # qq_match = re.match(r'^\d{5, 12}$', qq)
    if not name_match:
        print('无效用户名')
    if not qq_match:
        print('无效qq')
    if name_match and qq_match:
        print('你输入的信息有效')


if __name__ == '__main__':
    match_qq_nickname()

# 结果
# 你输入的信息有效

2.从一段文字中提取出国内手机号码。

下面这张图是截止到2017年底,国内三家运营商推出的手机号段。
在这里插入图片描述

import re


def main():
    # 创建正则表达式对象,使用前瞻和回顾来保证手机号前后不应该出现数字
    
    pattern = re.compile(r'(?<=\D)1[34578]\d{9}(?=\D)')  
    sentence = '''重要的事情说8130123456789遍,我的手机号是13512346789这个靓号,
    不是15600998765,也是110或119,王大锤的手机号才是15600998765。'''
    # 查找所有匹配并保存到一个列表中
    mylist = re.findall(pattern, sentence)
    print(mylist)
    print('--华丽的分割线--')
    # 通过迭代器取出匹配对象并获得匹配的内容
    for temp in pattern.finditer(sentence):
        print(temp.group())
    print('--华丽分割线--')
    # 通过search函数指定搜索位置找出所有匹配
    m = pattern.search(sentence)
    while m:
        print(m.group())
        m = pattern.search(sentence, m.end())
        
main()

3.替换字符串中的不良内容

import re


def main():
    sentence = '你丫是傻叉吗? 我操你大爷的. Fuck you.'
    purified = re.sub('[操丫]|fuck|shit', '*', sentence, flags=re.IGNORECASE)
    print(purified)
    
main()

4.拆分字符串

import re


def main():
    poem = '窗前明月光,疑是地上霜。举头望明月,低头思故乡。'
    sentence_list = re.split(r'[,。,.]', poem)
    while '' in sentence_list:
        sentence_list.remove('')
    print(sentence_list)

main()

猜你喜欢

转载自blog.csdn.net/wuhongxia29/article/details/90713626
今日推荐