zoukankan      html  css  js  c++  java
  • Python基础 9.正则

    9.1 正则

    1、判断一个字符串是否匹配给定的格式

    从一个字符串中按指定格式提取信息

    9.2 re

    1、findall方法:

    在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表
      import re  #导入re模块,

    a ='python123python666pyt hon888'

    re. findall('python',a) # 把所符台规则的匹配出来,返回一个列表[ 'python', ' python',' python' ]

    re. findall('123' ,a)
    [ '123' ]

    re.findall('999' ,a) #如果匹配的不存在,则返回一一个空列表[]

    2、match方法:

    re.match 尝试从字符串的起始位置匹配一个模式,匹配成功 返回的是一个匹配
    对象(这个对象包含了我们匹配的信息),如果不是起始位置匹配成功的话,
    match()返回的是空,

    注意:match只能匹配到一个
    import re .

    a ='python123python666python888 "
    re .match(' python',a)

    <_ sre.SRE_Match object; span=(e, 6), match='python" >

    re .match( '123' ,a)

    »>> re .match( " python123', a)

    <_ sre.SRE_ Match object; span=(0, 9), match= ' python123'>l»»>

    bb = re. match('python" ,a)

    »> bb.group()     ### 1. ###

    >>> bb. span()     ### 2. ###

    1.可以通过group()提取匹配到的内容

    2.可以通过span()提取匹配到的字符下标

     

    3、search方法:

    re.search 扫描整个字符串,匹配成功 返回的是一个匹配对象(这个对象包含了我们匹配的信息)

    注意:search也只能匹配到一个,找到符合规则的就返回,不会一直往后找

     

    re.search('123',a)
    <_ sre.SRE_ Match object; span=(6, 9), match='123'>

    re.search( " python',a)
    <_ sre.SRE_ Match object; span=(0, 6),match='python'>

    re.search('6',a)
    <_ sre.SRE_ Match object; span=(15, 16), match='6'>

    dd = re . search(' python',a)
    dd. group()
    'python "

    dd.span()
    (e, 6)

    re.match与re.search的区别:

    re.match只匹配字符串的开始位置找,如果字符串开始不符合正则表达式,则匹配失败,
    re.search:匹配整个字符串,如果一直找不到则返回是空的,没有结果

     

    9.3 元字符 re.S 匹配换行符

    1.单字符匹配 :

    字符                  功能
                     
    .                 匹配任意1个字符(除了 )
    []               匹配]中列举的字符
    d               匹配数字,即0-9
    D               匹配非数字,即不是数字
    s               匹配空白,即空格,tab键
    S               匹配非空白
    w               匹配单词字符,即2-Z、A-Z、0-9、_
    W               匹配非单词字符

     

    2.代表数量的元字符:

    字符                 功能
    *             匹配前一个字符出现0次或者无限次,即可有可无
    +             匹配前一个字符出现1次或者无限次,即至少有1次
    ?             匹配前一个字符出现1次或者0次,即要么有1次,要么没有
    {m}           匹配前一一个字符出现m次
    {m,}           匹配前一个字符至少出现m次
    {m,n}         匹配前一一个字符出现从m到n次

     

     

     

    3.表示边界的元字符:

    字符                     功能
    ^                   匹配字符串开头
    $                   匹配字符串结尾
                       匹配一一个单词的边界
    B                   匹配非单词边界

     

    4.分组匹配

    字符                     功能

    | 匹配左右任意- -个表达式 (ab) 将括号中字符作为一个分组

     

    5.贪婪与非贪婪

    正则默认都是用贪婪模式去匹配数据的,就是尽可能多的匹配符合要求的数据,

    在非贪婪模式下,始终找最短匹配

     

    a ='<html>0008< /html ><td>bbbb</td>'

    re. findall(r'<.*>',a)

    [' <html>090< /htmlxtd>bbbb</td>']

    re. findall(r'<.*?>',a)   #加上?变成非贪婪模式
    [ "<html>',, " </html>',, '(td>' .'</td>']

    re. findall(r'-(d+)(.+-)','-123456789-')
    [(' 12345678', '9-')]

    >>> re. findall(r'-(d+?)(.+-)','-123456789-')[('1' ,'23456789- ')]

     

  • 相关阅读:
    Win10 rocketmq 安装
    Vulnhub DC7
    Vulnhub DC6
    Vulnhub DC5
    Vulnhub DC4
    Vulnhub DC3
    一文带你学会CSRF漏洞
    Shiro反序列化漏洞复现与实战
    DataPipeline CPO 陈雷:实时数据融合之法:便捷可管理
    DataPipeline合伙人 & CPO 陈雷:企业实时数据管理问题与实践 | 附PPT下载
  • 原文地址:https://www.cnblogs.com/dyf25288-/p/11675108.html
Copyright © 2011-2022 走看看