• python 正则表达式 初级


    举例:

    1.匹配hello world

    key = r"<h1>hello world<h1>" #源文本
    p1 = r"<h1>.+<h1>" #正则表达式
    pattern1 = re.compile(p1)
    print pattern1.findall(key) #findall返回的是所有符合要求的元素列表,如果只有一个元素时,它还是返回列表。

    2.匹配@与.之间的ygomi

    key='aaaapiaoyu.qiu@ygomi.com.cn'
    >>> p1=r"@.+."
    >>> pattern1=re.compile(p1
    >>> pattern1.findall(key)
    ['@ygomi.com.']    #结果匹配到了更多的内容
    >>> 
    >>> p1=r"@.+?."    #增加?
    >>> pattern1=re.compile(p1)
    >>> pattern1.findall(key)
    ['@ygomi.']    #匹配成功
    原因是正则表达式默认是“贪婪”的,“+”代表是字符重复一次或多次,在我们没有细说这个多次到底是多少次时,它会尽可能“贪婪”地多给我们匹配字符,即匹配到最后一个“.”。怎么解决这种问题呢?只要在“+”后面加一个“?”就可以将贪婪的“+”改成了懒惰的“+”。

    3.准确控制控制重复次数:{a,b} 其中,a<=匹配次数<=b

    举栗,我们有sas,saas,saaas,我们想要sas和saas
    key = r"saas and sas and saaas"
    p1 = r"sa{1,2}s"
    pattern1 = re.compile(p1)
    print pattern1.findall(key)
    输出:['saas', 'sas']
     
    如果你省略掉{1,2}中的2,那么就代表至少匹配一次,那么就等价于?。如果你省略掉{1,2}中的1,那么就代表至多匹配2次。

    正则表达式里的元字符及其作用:

    元字符
    说明
    .
    代表任意字符,用于匹配除换行符( )之外的所有字符。
    |
    逻辑或操作符,例如:A|B用于匹配A或B
    [ ]
    匹配内部的任一字符或子表达式
    [0-9] 0123456789任意之一
    [a-z]   小写字母任意之一
    [A-Z]   大写字母任意之一
    [^]
    '[]'用于标示一组字符,如果^是第一个字符,则标示的是一个补集。
    比如[0-9]表示所有的数字,[^0-9]表示除了数字外的字符。
    -
    定义一个区间
    对下一字符取非(通常是普通变特殊,特殊变普通)
    *
    匹配前面的字符或者子表达式0次或多次(贪婪模式,即尽可能多的匹配)
    *?
    惰性匹配上一个(非贪婪模式)
    +
    匹配前一个字符或子表达式一次或多次(贪婪模式)
    +?
    惰性匹配上一个(非贪婪模式)
    ?
    匹配前一个字符或子表达式0次或1次重复(贪婪模式)
    {n}
    匹配前一个字符或子表达式
    {m,n}
    匹配前一个字符或子表达式至少m次至多n次
    {n,}
    匹配前一个字符或者子表达式至少n次
    {n,}?
    前一个的惰性匹配
    ^
    匹配字符串的开头
    A
    匹配字符串开头
    $
    匹配字符串的末尾(末尾如果有换行符 ,就匹配 前面的那个字符)
    []
    退格字符
    c
    匹配一个控制字符
    d
    匹配任意数字,等同于[0-9]
    D
    匹配数字以外的字符,等同于[^0-9]匹配非数字
    匹配制表符
    w
    匹配任意数字字母下划线,,,等同于[a-z0-9A-Z_]匹配大小写字母、数字和下划线
    W
    不匹配数字字母下划线,,,等同于[^a-z0-9A-Z_]等同于上一条取非
     
  • 相关阅读:
    python单线程,多线程和协程速度对比
    python redis模块的常见的几个类 Redis 、StricRedis和ConnectionPool
    saltstack安装部署以及简单实用
    python编码详解--转自(Alex的博客)
    老铁,这年头不会点Git真不行!!!
    个人阅读&个人总结
    提问回顾
    结对项目
    个人作业Week3-案例分析
    个人作业Week2-代码复审
  • 原文地址:https://www.cnblogs.com/mianbaoshu/p/12068720.html
Copyright © 2020-2023  润新知