zoukankan      html  css  js  c++  java
  • Python----正则表达式

     # re 正则表达式
    import re
    import requests
    
    with open('youdao.html',encoding='utf-8',mode='r') as f:
        date = f.read()
    
    pattren = re.compile('翻译')    # 输入要匹配的内容
    r1 = pattren.findall(date)     # 在date 中查找匹配的内容,全部匹配
    r2 = pattren.search(date)      # 在date 中查找匹配的内容,匹配到第一个就停止(一般写代码的时候测试使用)
    
    print('r1---->',len(r1),r1)
    print('r2---->',r2)
    
    
    # 练习
    # DD 匹配所以在一起的2个除数字以外的内容  都可以以此类推
    data1 = "a236jnfdjka908098?a《《doifjq345431kjalf+ad7f98a7f89amla"
    result1 = re.compile('d')        # 匹配所有的数字
    result2 = re.compile('dd')      # 匹配在一起的2个数字
    result3 = re.compile('D')        # 匹配除数字以外的其他内容
    result4 = re.compile('w')        # 匹配所有的数字和字母和_
    result5 = re.compile('W')        # 匹配除数字和字母之外的内容
    
    
    s1 = result1.findall(data1)
    s2 = result2.findall(data1)
    s3 = result3.findall(data1)
    s4 = result4.findall(data1)
    s5 = result5.findall(data1)
    
    print('s1 data1中所有的数字:',len(s1),s1)
    print('s2 data1中所有在一起的2个数字:',len(s2),s2)
    print('s3 data1中除数字以外的其他内容:',len(s3),s3)
    print('s4 data1中所有的数字和字母:',len(s4),s4)
    print('s5 data1中除数字和字母以外的其他内容:',len(s5),s5)

    运行结果:

    import re
    
    # 练习一:邮箱正则
    data1 = "2334@qq.com, 13456@qq.com,7788@qq.com。 4523@qq.com"
    pattren1 = re.compile('dddd@ww.com')
    j1 = pattren1.findall(data1)
    print('data1中的邮箱:',j1)
    
    
    # 次数匹配:
    # d{1,10}   表示在data2中匹配数字,最少1次,最长10次(具体次数范围根据实际情况定义即可)
    # {2}        表示只匹配2次
    # {2,}      表示最少2次,上不封顶。同理{,6} 最少0次,最高6次
    
    # d+        表示在data2中匹配数字,最少1次,最长无限次,等同于{1,}
    # d*        表示在data2中匹配数字,最少0次,最长无限次,等同于{0,}
    
    # .          表示匹配所有
    # .         转义,表示匹配.
    
    data2 = "23132223@qq.com, 152232321@163.com、cy_pp@aliyun.com。 knff_cks@hotmail.com"
    patten2 = re.compile('w+@w+.com')
    j2 = patten2.findall(data2)
    print('data2中的邮箱:',j2)
    
    data2_2 = "23132223@qqxcom, 152232321@163,com、cy_pp@aliyun.com。 knff_cks@hotmail.com"
    patten2_2 = re.compile("w+@w+.com")
    j2_2 = patten2_2.findall(data2_2)
    print('data2_2中的邮箱:',j2_2)
    
    
    # 匹配模式:正则表达式默认是贪婪匹配的原则,就是尽可能多的去匹配想要的元素,如果想要解除贪婪模式可以使用?
    data = 'aa<div>test1</div>bb<div>test2</div>cc<div>test3</div> '
    pattern_4_1 = re.compile('<div>.*</div>')
    pattern_4_2 = re.compile('<div>.*?</div>')
    r1 = pattern_4_1.findall(data)
    r2 = pattern_4_2.findall(data)
    print('贪婪模式:',r1)
    print('解除贪婪模式:',r2)
    
    # 正则表达式的万能表达式:.*?  .+?

    运行结果:

  • 相关阅读:
    (三)数据预处理过程简介
    (二)数据挖掘需要哪些技术
    (一) 什么是数据挖掘?
    怎样提问呢?
    什么是自我意识
    高效能人士的七个习惯
    “U”型读书法
    CMDB学习之一
    层级选择器
    css选择器
  • 原文地址:https://www.cnblogs.com/Z-Queen/p/14662861.html
Copyright © 2011-2022 走看看