zoukankan      html  css  js  c++  java
  • python中正则表达式的使用

    前言:

    我们在做接口自动化的时候,处理接口依赖的相关数据时,通常会使用正则表达式来进行提取相关的数据,今天在这边和大家聊聊如何在python中使用正则表达式。在python使用正则表达式,可以使用官方库re来实现

    一、re模块的使用

    python中使用正则表达式,需要用到re模块来进行操作,这边给大家介绍几个re模块中常用的方法。

    1、re.match函数

    参数说明:接收两个参数,

    • 第一个是匹配的规则,
    • 第二个是匹配的目标字符串,

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

    案例:

    2、re.search方法

    参数说明:接收两个参数,

    • 第一个是匹配的规则,
    • 第二个是匹配的目标字符串,

    re.search 扫描整个字符串并返回第一个成功的匹配。

    案例:

     re.match与re.search的区别

    • re.match从字符串的开始位置进行匹配,如果字符串开始不符合正则表达式,则匹配失败,函数返回空;
    • re.search匹配整个字符串,直到找到一个匹配成功的则进行返回,如果整个字符串中都没有找到匹配成功的,则返回空

    3、findall方法

    参数说明:接收两个参数,

    • 第一个是匹配的规则,
    • 第二个是匹配的目标字符串,

    在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。

    案例:

     注意: match 和 search 是匹配一个结果, findall 匹配处所有符合规则的结果。

    4、sub方法

    替换字符串中的某些字符,可以用正则表达式来匹配被选子串。

    re.sub(pattern, repl, string, count=0 )

    参数:
    • pattern:匹配的规则;
    • repl:匹配之后替换的新内容;
    • string:需要按规则替换的字符串;
    • count:替换的次数,可以不传参,默认替换所有符合规则的。
    案例:

     5、贪婪模式说明:

    贪婪模式:Python里数量词默认是贪婪的,总是尝试匹配尽可能多的字符;

    如下案例:有一个字符串s,我们需要在字符串中匹配3个以上的数字,字符串中数字有8个,贪婪模式会尽可能匹配更多字符,3个以上,8个也是3个以上,那么这里匹配的结果就是8个数字。

    非贪婪模式:总是尝试匹配尽可能少的字符,在"*","?","+","{m,n}",{m,}后面加上?,可以关闭贪婪模式

    关闭贪婪模式之后,尽可能获取更少的,如下,只获取到最前面的3个数值(规则时至少3个,非贪婪就是匹配最前面符合规则的3个数组)

     

    关于re模块,更多的使用方法,本文不做过多的介绍,大家自行研究,谢谢!下面附上正则表达式的基本的匹配供大家参考

    二、正则表达式语法

    1、表示单字符

    单字符:即表示一个单独的字符,比如匹配数字用d ,匹配非数字使用D,具体规则如下:

    字符

    功能

    .

    匹配任意1个字符( 除外)

    [7a ]

    匹配[ ]中列举的字符,这里就是匹配7或者a这两个字符其中的一个

    d

    匹配数字,即0-9

    D

    匹配非数字,即不是数字

    s

    匹配空白,即 空格,tab键

    S

    匹配非空白

    w

    匹配单词字符,即a-z、A-Z、0-9、_

    W

    匹配非单词字符

    2、表示数量

    如果要匹配某个字符多次,就可以在字符后面加上数量进行表示,具体规则如下:

    字符

    功能

    *

    匹配前一个字符出现0次或者无限次,即可有可无

    +

    匹配前一个字符出现1次或者无限次,即至少有1次

    ?

    匹配前一个字符出现1次或者0次,即要么有1次,要么没有

    {m}

    匹配前一个字符出现m次

    {m,}

    匹配前一个字符至少出现m次

    {m,n}

    匹配前一个字符出现从m到n次

    3、表示边界

    用来表示字符串或者单词的边界 如字符串开头,单词开头等

    字符

    功能

    ^

    匹配字符串开头

    $

    匹配字符串结尾

    

    匹配单词的边界

    B

    匹配非单词边界

    4、匹配分组

    对匹配的内容做分组处理

    字符

    功能

    (aaa)

    将括号中字符作为一个分组

    umber

    引用分组number匹配到的字符串

    (?P<g1>)

    分组起别名为g1

    (?P=g1)

    引用别名为g1分组匹配到的字符串

  • 相关阅读:
    django文件——django + jquery-file-upload上传篇(一)-- 插件实现文件上传
    jQuery动态数字翻滚计数到指定数字的文字特效 JQuery.Running.js
    bootstrap table 第一弹:实现模态框弹出编辑
    input输入框下横线动画实现+自动填充
    Jquery 实现动态添加输入框&编号
    解决公司内网只允许微信上网:CentOS7 + SS5 搭建Sockt5代理服务器方案
    python学习系列:装饰器
    linux学习:文件属性(一)—— inode
    requests模块中request函数参数介绍
    Forbidden(403)的3种处理方式
  • 原文地址:https://www.cnblogs.com/htx18/p/11749489.html
Copyright © 2011-2022 走看看