zoukankan      html  css  js  c++  java
  • python学习笔记(十)——正则表达式和re模块

    #正则表达式和re模块
    
    # match(pattern, string,[flag])     #在字符串开始时进行匹配
    # pattern 正则表达式
    # string 要匹配的字符串
    # [flag] 可选标志位,用于控制匹配方式,不区分大小写等
    
    # 匹配字符串是否以mr_开头,不区分大小写
    import re
    pattern = r'mr_w+'
    string = 'MR_Shop mr_shop'
    match = re.match(pattern,string,re.I)       #re.I表示不区分大小写
    print(match)                                #匹配成功返回match对象
    print('匹配起始位置:',match.start())
    print('匹配结束位置:',match.end())
    print('匹配位置元组:',match.span())
    print('要匹配的字符串:',match.string)
    print('匹配到的数据:',match.group())
    string = '项目名称MR_SHOP mr_shop'
    match = re.match(pattern,string,re.I)
    print(match)                                 #匹配失败返回None
    
    # 验证输入号码是否是中国移动的号码
    import re
    pattern = r'(13[4-9]d{8})|(147)|(15[012789]d{8})|18[278]d{8}'
    mobile_1 = '15312584698'
    match = re.match(pattern,mobile_1)
    if match == None:
        print(mobile_1,'不是中国移动号码')
    else:
        print(mobile_1,'是中国移动号码')
    mobile_2 = '15123654785'
    match = re.match(pattern,mobile_2)
    if match== None:
        print(mobile_2, '不是中国移动号码')
    else:
        print(mobile_2, '是中国移动号码')
    
    # re.search(pattern,string,[flag])  搜索第一个匹配的值
    
    import re
    pattern = r'mr_w+'
    string = 'MR_SHOP mr_SHOP'
    match =re.search(pattern,string,re.I)
    print(match)                              #匹配成功返回match对象,输出匹配结果
    string = '项目名称MR_SHOP mr_shop'
    match = re.search(pattern,string,re.I)
    print(match)
    
    # re.finall(pattern,string,[flag])  匹配所有符合正则表达式的字符串
    import re
    pattern = r'mr_w+'
    string = 'MR_SHOP mr_SHOP'
    match =re.findall(pattern,string,re.I)
    print(match)                             #匹配成功以列表形式返回
    string = '项目名称MR_SHOP mr_shop'
    match = re.findall(pattern,string,re.I)
    print(match)
    
    #模式字符串包含分组则返回匹配文本
    import re
    pattern = r'([1-9]{3}(.[0-9]{1,3}){3})'
    string_1 = '127.25.36.3 152.36.22.3'
    match = re.findall(pattern,string_1)        #想要获取整个模式字符串的匹配,需要将模式字符串用小括号括起来
    for item in match:
        print(item[0])
    
    # 字符串替换
    # re.sub(pattern,repl,string,count,flags)
    # pattern 正则表达式
    # repl 要替换的字符串
    # string 被查找替换的原始字符串
    # count 可选参数,模式匹配后替换的最大次数,默认为0,表示替换所有
    # flag 可选参数,控制匹配方式
    
    # 替换危险字符
    import re
    pattern = r'(黑客)|(监听)|(抓包)|(Trojan)'
    string = '我是一名程序员,喜欢看黑客方面的书,想研究一下Trojan'
    sub = re.sub(pattern,'**',string)
    print(sub)
    string = '我是一名程序员,喜欢看计算机网络方面的书,喜欢开发网站'
    sub = re.sub(pattern,'**',string)
    print(sub)
    
    # 使用正则表达式分割字符串
    # re.split(pattern,string,[maxsplit],[flags])
    # pattern 正则表达式
    # string 匹配字符串
    # maxsplit 设置最大拆分次数
    # flags 标志位,控制匹配参数
    
    # 输出被@的好友名称
    import re
    str1 = '@扎克伯格 @马云 @俞敏洪'
    pattern = r's*@'
    list1 = re.split(pattern,str1)
    print("您@的好友:")
    for item in list1:
        if item != "":               #输出不为空的元素
            print(item)
    
  • 相关阅读:
    数组的一些经典案例(循环)(max=score[0])(冒泡)(flag标志)(杨辉三角)
    冒泡排序
    C语言之数组
    循环结构的一些案例:倒等腰三角形、菱形、暴力破解
    break和contine关键字
    循环嵌套(打印*** ***)
    循环的经典案例(李白买酒)
    C语言循环结构-while/do...while/for--逢3过,阶乘,九九乘法表
    WordPress部署踩坑记
    Symbol
  • 原文地址:https://www.cnblogs.com/lelezuimei/p/11798058.html
Copyright © 2011-2022 走看看