码迷,mamicode.com
首页 > 其他好文 > 详细

正则补缺~~~|网络编程

时间:2018-10-17 22:14:06      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:nta   正则匹配   指定   标识   服务器   .com   int   否则   现在   

正则补缺

  • findall

    import re
    ?
    # 没有(),结果集中保存完整匹配的内容
    # f = re.findall(‘abc‘, ‘abcdasabcakdjklasjabc‘)
    # 与上面的情况等价
    # f = re.findall(‘(abc)‘, ‘abcdasabcakdjklasjabc‘)
    # 按照正则进行完整匹配,但是结果集只显示分组内容
    # f = re.findall(‘qq(abc)ww‘, ‘ahdakqqabcwwhsad‘)
    # 按照正则进行完整匹配,但是结果集中的元素时分组信息组成的元组
    # f = re.findall(‘qq(abc)(ww)‘, ‘ahdakqqabcwwhsaqqabcwwd‘)
    # 满足上面所有的规律
    # f = re.findall(‘(qq(abc)(ww))‘, ‘ahdakqqabcwwhsaqqabcwwd‘)
    # 匹配:‘a(hello)c‘ 或 ‘a(world)c‘
    # f = re.findall(‘a(hello|world)c‘, ‘sadahellocshdjaworldcsd‘)
    f = re.findall((a(hello|world)c), sadahellocshdjaworldcsd)
    ?
    print(f)
  • split

    import re
    ?
    c = re.compile(r\d)
    ?
    s = 正则其实不难1但是学完之后2发现写不出来3是这样吧
    ?
    # 按照正则规律进行切割,可以指定切割次数
    ret = c.split(s, 1)
    ?
    print(ret)
  • sub

    import re
    ?
    ‘‘‘
    c = re.compile(r‘\d‘)
    ?
    # 使用特点内容替换正则匹配到的内容,可以指定替换次数
    ret = c.sub(‘ ‘, ‘how1are2you‘, 2)
    ?
    print(ret)
    ‘‘‘
    ?
    def double(s):
        # print(s)
        return str(int(s.group()) * 2)   
    ?
    # 可以人为的干预正则替换的过程
    # 因此需要传递一个处理的(匿名)函数
    ret = re.sub(r\d, double, how1are2you)
    print(ret)
  • 转义问题

    import re
    ?
      # 匹配所有正则语法中涉及的字符都需要转义
    ?
      ‘‘‘
      # python: \\\\d     \\\d   r‘\\d‘
      # re:    \\d        \\d     \\d
      # 匹配:   \d          \d      \d
      # c = re.compile(‘\\\\d‘)
      # c = re.compile(‘\\\d‘)
      # 推荐使用,否则你需要多写好多  c = re.compile(r‘\\d‘)
    ?
      s = c.search(‘\d‘)
    ?
      if s:
          print(s.group())
      ‘‘‘
    ?
      ‘‘‘
      c = re.compile(r‘\\b‘)
    ?
      # 在匹配的字符串中有特殊意义的字符也需要进行转义
      # 若不想转义最好前面添加字符‘r‘
      s = c.search(r‘\b‘)
    ?
      if s:
          print(s.group())
      ‘‘‘
    ?
      # 了解
      # c = re.compile(r‘\bhello‘)
      # 单独匹配边界,findall保存的结果全都是空白
      c = re.compile(r\b)
    ?
      f = c.findall(hello,sdjaks)
    ?
      print(f)

     

      

    1. 使用正则时,python字符串有特殊意义的字符最好转义

    2. 要匹配在正则语法中有特殊函数的字符,都需要进行转义

    3. 字符串前添加‘r‘,可以使其变为原始字符,不要考虑转义问题

相关概念

  • OSI七层模型:开发系统互联参考模型。它从低到高分别是:物理层数据链路层网络层传输层、会话层、表示层应用层

  • TCP/IP:在OSI七层模型的基础上简化抽象出来的一套网络协议簇,现在得到了广泛应用。

  • TCP:传输控制协议

    • 有连接的,数据传输是可靠的。

    • 传输的速度稍慢,三次握手,四次挥手,数据检查

  • UDP:用户数据报协议

    • 无连接的,数据是不可靠的

    • 传输的速度较快

  • IP地址:唯一的一台计算机标识

    • 查看IP:windows下终端下输入ipconfig

  • ping:检查网络连通性

    • 示例:ping IP/域名

  • 端口号:每个引用拥有唯一的端口号

    • 范围:0~65535

      • 公认端口:0~1023

      http:80
      https:443
      smtp:25
      ftp:21
      ssh:22
      • 其他端口:1024~65535

  • 网络编程核心

    • IP + 端口号

    • 库:socket

TCP协议

  • 说明:面向连接的、数据可靠、三次握手、四次挥手、传输速度稍慢

  • 原理:见图片tcp.png

  • 示例:模拟http请求从百度服务器获取数据,见01-tcp-http.py

  • TCP协议的服务器与客户端:见02-tcp-server.py、03-tcp-client.py

UDP协议

  • 说明:面向无连接、数据不可靠、传输速度较快,适应于对数据要求不太严格的情况。

  • 原理:见图片udp.png

  • 示例:采用udp协议模拟飞秋发送短信,见04-udp-feiqiu.py

  • UDP协议的服务器与客户端:见05-udp-server.py、06-udp-client.py

  •  

正则补缺~~~|网络编程

标签:nta   正则匹配   指定   标识   服务器   .com   int   否则   现在   

原文地址:https://www.cnblogs.com/542684416-qq/p/9807224.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!