• Python正则表达式操作(re模块使用篇)


    在这里插入图片描述
    ​ 

    活动地址:CSDN21天学习挑战赛

    学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。

    学习日记

    目录

    学习日记

    写在前面(语法篇回顾)

    re模块实现正则表达式操作

    一、匹配字符串

    1、使用match()方法进行匹配

    2、使用search()方法进行匹配

    3、使用findall()方法进行匹配

    二、替换字符串

    1、 sub()方法用于实现字符串的替换。

    2、隐藏中奖信息中的手机号码。

    3、替换出现的危险字符串

    三、使用正则表达式分割字符串

    1、split()方法用于实现根据正则表达式分割字符串,并以列表的形式返回。

    2、从给定的URL地址中提取出请求地址和各个参数。

    3、场景模拟:微博的@好友栏目中同时@几位好友,输出被@的好友的名称。


    写在前面(语法篇回顾)

        Python提供re模块,用于实现正则表达式操作。在实现时,可以使用re模块提供的方法(如search()、match()、findall()等)进行字符串处理,也可以先用re模块的compile()方法将模式字符串转换为正则表达式对象,再用正则表达式对象的相关方法来操作字符串。

        使用re模块时,需先import引入

    import re

    re模块实现正则表达式操作

    一、匹配字符串

    1、使用match()方法进行匹配

    re.search(pattern, string, [flags])

    re.I:不区分字母大小写

    re.A:让\w不匹配汉字 

    参数说明:

    pattern:表示模式字符串,由要匹配的正则表达式转换而来。

    string:表示要匹配的字符串。

    flags:可选参数,表示标志位,用于控制匹配方式,如是否区分字母大小写。

     

    验证输入的手机号是否有效。

    1. import re
    2. pattern = r'(13[4-9]\d{8})|(15[01289]\d{8})$'
    3. mobile = '12789422222'
    4. match = re.match(pattern,mobile) # 进行模式匹配
    5. if match == None: # 判断是否为None,为真表示匹配失败
    6. print(mobile,'不是有效的中国移动手机号码。')
    7. else:
    8. print(mobile,'是有效的中国移动手机号码。')
    9. mobile = '56842122221'
    10. match = re.match(pattern,mobile) # 进行模式匹配
    11. if match == None: # 判断是否为None,为真表示匹配失败
    12. print(mobile,'不是有效的中国移动手机号码。')
    13. else:
    14. print(mobile,'是有效的中国移动手机号码。')

    结果

    1. 12789422222 不是有效的中国移动手机号码。
    2. 56842122221 不是有效的中国移动手机号码。

    2、使用search()方法进行匹配

            search()方法用于在整个字符串中搜索第一个匹配的值,如果在起始位置匹配成功,则返回Match对象,否则返回None。

    re.search(pattern, string, [flags])

    re.I:不区分字母大小写。

    re.A:让\w不匹配汉字 。

    参数说明:

    pattern:表示模式字符串,由要匹配的正则表达式转换而来。

    string:表示要匹配的字符串。

    flags:可选参数,表示标志位,用于控制匹配方式,如是否区分字母大小写。

     

    验证是否出现危险字符。

    1. import re
    2. pattern = r'(黑客)|(抓包)|(监听)|(Trojan)' # 模式字符串
    3. about = 'Trojan。'
    4. match = re.search(pattern,about) # 进行模式匹配
    5. if match == None: # 判断是否为None,为真表示匹配失败
    6. print(about,'安全!')
    7. else:
    8. print(about,',出现了危险词汇!')
    9. about = '真墨迹。是'
    10. match = re.match(pattern,about) # 进行模式匹配
    11. if match == None: # 判断是否为None,为真表示匹配失败
    12. print(about,'安全!')
    13. else:
    14. print(about,'出现了危险词汇!')

    结果

    1. Trojan。 ,出现了危险词汇!
    2. 真墨迹。是 安全!

    3、使用findall()方法进行匹配

            findall()方法用于在整个字符串中搜索所有符合正则表达式的字符串,并以列表的形式返回。如果匹配成功,返回包含匹配结构的列表,否则返回空列表。

    re.findall(pattern, string, [flags])

    re.I:不区分字母大小写。

    re.A:让\w不匹配汉字。

    参数说明:

    pattern:表示模式字符串,由要匹配的正则表达式转换而来。

    string:表示要匹配的字符串。

    flags:可选参数,表示标志位,用于控制匹配方式,如是否区分字母大小写。

    二、替换字符串

    1、 sub()方法用于实现字符串的替换。

    re.sub(pattern, repl, string, count, flags)

    re.I:不区分字母大小写。

    re.A:让\w不匹配汉字 。

    参数说明

    pattern:表示模式字符串,由要匹配的正则表达式转换而来。

    repl:表示替换的字符串。

    string:表示要匹配的字符串。

    count:可选参数,表示模式匹配后替换的最大次数,默认值为0,表示替换所有的匹配。

    flags:可选参数,表示标志位,用于控制匹配方式,如是否区分字母大小写。

    2、隐藏中奖信息中的手机号码。

    1. import re
    2. pattern=r'1[34578]\d{9}' #定义要替换的字符串模式
    3. string='中奖号码是:84978981 联系电话是:1361111111'
    4. result=re.sub(pattern,'1XXXXXXXXXX',string)#替换字符串
    5. print(result)

    结果

    中奖号码是:84978981   联系电话是:1361111111
    

    3、替换出现的危险字符串

    1. import re
    2. pattern = r'(黑客)|(抓包)|(监听)|(Trojan)' # 模式字符串
    3. about = 'Trojan。'
    4. sub = re.sub(pattern,'@_@',about) # 进行模式替换
    5. print(sub)
    6. about = '我是一名程序员。'
    7. sub = re.sub(pattern,'@_@',about) # 进行模式替换
    8. print(sub)

    结果

    1. @_@。
    2. 我是一名程序员。

    三、使用正则表达式分割字符串

    1、split()方法用于实现根据正则表达式分割字符串,并以列表的形式返回。

    re.split(pattern, string, [maxsplit], [flags])

    re.I:不区分字母大小写。

    re.A:让\w不匹配汉字。

    参数说明

    pattern:表示模式字符串,由要匹配的正则表达式转换而来。

    string:表示要匹配的字符串。

    maxsplit:可选参数,表示最大的拆分次数。

    flags:可选参数,表示标志位,用于控制匹配方式,如是否区分字母大小写。

    2、从给定的URL地址中提取出请求地址和各个参数。

    1. import re # 导入re模块
    2. pattern = r'[?|&]' # 定义分隔符
    3. url = 'https://mp.csdn.net/mp_blog/creation/editor/126219921.jsp?username="mr"&pwd="mrsoft"'
    4. result = re.split(pattern,url)#分割字符串
    5. print(result)

    结果

    ['https://mp.csdn.net/mp_blog/creation/editor/126219921.jsp', 'username="mr"', 'pwd="mrsoft"']
    

    3、场景模拟:微博的@好友栏目中同时@几位好友,输出被@的好友的名称。

    1. import re
    2. str1 = '@张三 @李四 @王五麻子'
    3. pattern = r'\s*@'
    4. list1 = re.split(pattern,str1) # 用空格和@或单独的@分割字符串
    5. print('您@的好友有:')
    6. for item in list1:
    7. if item != "": # 输出不为空的元素
    8. print(item) # 输出每个好友名

    结果

    1. @的好友有:
    2. 张三
    3. 李四
    4. 王五麻子

  • 相关阅读:
    企业最关心的ISO三体系认证的几个问题
    一个月一个基于SpringBoot的在线教育系统「源码开源」
    AI论文速读 | TPLLM:基于预训练语言模型的交通预测框架
    应对数据爆炸时代,揭秘向量数据库如何成为AI开发者的新宠,各数据库差异对比
    09架构管理之工作量评估评审
    LeetCode221112_124、844.比较含退格的字符串
    x264编译
    WP-AutoPostPro 汉化版: WordPress自动采集发布插件 WordPress文章采集
    进程信号(linux)
    【5GC】什么是5G切片?5G切片如何工作?
  • 原文地址:https://blog.csdn.net/m0_63794226/article/details/126219921