zoukankan      html  css  js  c++  java
  • python正则表达式入门

    基本概念

    使用正则表达式需要import re

    表达式前加r避免转义

    d代表数字,s代表空白字符,w代表字母+数字。

    .代表任意单个字符

    {m,n}代表前面字符至少出现m次,最多出现n次。

    (xxx)括号代表分组,方便在匹配结果中取出。

    (?:xxx)不分组,不能从匹配结果中单独取出,可以在后面加匹配次数。


    research

    只返回第一个匹配结果,不匹配则返回None.

    结果.group()代表匹配结果,group(1)代表表达式中第一个()内的字符。

    import re
    text = "inet addr:211.2.10.100  Bcast:211.2.10.255  Mask:255.255.255.0 inet addr:211.2.10.123"
    # find ip address
    m = re.search(r"inet addr:((d{1,3}.){3}d{1,3})", text)
    ip = m.group(1)
    print ip
    # 211.2.10.100

    findall

    匹配所有结果,返回列表。

    如果模式中有1个(),则列表内容为分组字符串,如果有1个以上(),则列表内容为元组,元组内容为分组内容。


    import re
    a = """tcpdump  -n -x -c 1
    tcpdump: WARNING: eth0: no IPv4 address assigned
    tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
    listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
    15:13:57.653999 IP 10.1.1.3.ssh > 10.1.1.2.60442: Flags [P.], seq 2265683999:2265684099, ack 3711911807, win 90, length 100
            0x0000:  4510 008c 446b 4000 4006 50f9 0a01 0103
            0x0010:  0a01 0102 0016 ec1a 870b 981f dd3f 477f
            0x0020:  5018 005a a576 0000 1810 f435 f028 ef1e
    1 packets captured
    1 packets received by filter
    0 packets dropped by kernel """
    b = re.findall(r"(?: wwww){8}", a)
    # b = [' 4510 008c 446b 4000 4006 50f9 0a01 0103', ' 0a01 0102 0016 ec1a 870b 981f dd3f 477f', ' 5018 005a a576 0000 1810 f435 f028 ef1e']
    
    c = re.findall(r"> (d+.d+.d+.d+)", a)
    # c = ['10.1.1.2']
    
    d = re.findall(r"(d+.d+.d+.d+).+> (d+.d+.d+.d+)", a)
    # d = [('10.1.1.3', '10.1.1.2')]
    
    e = re.findall(r"( wwww){8}", a)
    # e = [' 0103', ' 477f', ' ef1e'], 每列最后一个。
    
    



    官方文档:

    http://docs.python.org/2/library/re.html





  • 相关阅读:
    Oracle 分区索引
    linux中select网络通信
    AVL树,红黑树,B-B+树,Trie树原理和应用
    zoj1232Adventure of Super Mario(图上dp)
    怎样更改Linux中默认的openjdk为自己安装的JDK
    食用甜玉米:增进健康,老少皆宜
    设计模式【3】:抽象工厂【创建对象】
    centos 7 安装JDK (Linux安装jdk)
    微信支付v3开发(5) 扫码并输入金额支付
    微信支付v3开发(6) 收货地址共享接口
  • 原文地址:https://www.cnblogs.com/aukle/p/3233677.html
Copyright © 2011-2022 走看看