从0开始学正则表达式-基于python

简介: 关于正则表达式,当我们了解它就不难,不了解就很难,其实任何事情都是这样,没有人一生下来就啥都会,说白了,每个人都是一个学习了解进步的过程。学习和掌握正则表达式可能并不是太简单,因为它确实是有点像“外星语”。

关于正则表达式,当我们了解它就不难,不了解就很难,其实任何事情都是这样,没有人一生下来就啥都会,说白了,每个人都是一个学习了解进步的过程。学习和掌握正则表达式可能并不是太简单,因为它确实是有点像“外星语”。



     为什么要用正则表达式

市面上很早就有关于正则表达式的专业技术书记,在软件开发、性能测试、自动化测试、测试开发都可以看到正则表达式优美的舞姿

对于静态文本内容, 因为有提供与预期的搜索结果匹配的确切文本内容,典型的搜索和替换操作已经足够了,但它缺乏灵活性。如果要搜索动态内容,这就变得很困难,而正则表达式能很简洁强大的解决这一相关问题。

总而言之、言而总之,我们使用正则表达式可以很方便的过滤、筛选出需要的特定数据信息。



     正则表达式字符串匹配

"^\d+$"                                                   //非负整数(正整数 + 0) 
"^[0-9]*[1-9][0-9]*$"                               //正整数 
"^((-\d+)|(0+))$"                                     //非正整数(负整数 + 0) 
"^-[0-9]*[1-9][0-9]*$"                              //负整数 
"^-?\d+$"                                            //整数  

"[x{4e00}-x{9fa5}]+/u                                    //匹配汉字中文

“^d{15}|d{}18$”                                                    // 身份证号(15位或18位数字)

“^((13[0-9])|(15[^4,\\D])|(18[0,0-9]))\\d{8}$          // 手机号

"^(-?\d+)(\.\d+)?$"                                  //浮点数 
"^[A-Za-z]+$"                                           //由26个英文字母组成的字符串 
"^[A-Z]+$"                                               //由26个英文字母的大写组成的字符串 
"^[a-z]+$"                                               //由26个英文字母的小写组成的字符串 
"^[A-Za-z0-9]+$"                                      //由数字和26个英文字母组成的字符串 
"^\w+$"                                    //由数字、26个英文字母或者下划线组成的字符串
"^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$"  //url
/^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/   //  年-月-日
"^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$"                                                    //Emil

"^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$"   //email地址

 "(d+-)?(d{4}-?d{7}|d{3}-?d{8}|^d{7,8})(-d+)?"   //电话号码
"^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$"        //IP地址

^[-+]?\d+(\.\d+)?$                                           //值类型正则表达式



      正则表达式实例1

token在app登录后,相当于一个凭条,代表了该用户的唯一通行证,放到header里面传递到另外的接口。

---------接口以及返回的响应数据如下:---------

http://192.168.215.55/user/login.do?phone=13798359580&pwd=123456
{"msg":"成功","data":{"birthday":"","sex":"0","cityId":"4524157","userLogo":"","provinceId":"4524130","token":"p:sid:e3f9ff89eaf74a3ba208aa6ba74d00a44043","niceName":"test1234567","provinceName":"广东"},"state":0}

调用如下包含正则表达式的汗数,则可以得到token为

p:sid:e3f9ff89eaf74a3ba208aa6ba74d00a44043

------------基于python的函数如下----------

def GetToken():                                      #取用户登录的token值

    global token                                    #定义token全局变量

    url ='http://'+HOSTNAME+'/buyer/user/login.do' #接口的url

    params ={

       'phone': '13798359580',

        'pwd': '123456',

    }                                               #参数为登录手机号和密码

    request =urllib2.Request(url = url, data = urllib.urlencode(params))  #发送接口请求url和参数

    response= urllib2.urlopen(request)              #返回响应数据

    data =response.read()                          #返回响应数据

    regx ='.*"token":"(.*)","ud"'                   #正则表达式toekn,左匹配 "token":"   右匹配","ud"'

    pm =re.search(regx, data)                      #取token匹配值

    token =pm.group(1)                             #如果匹配到则返回token值

    returnFalse



     正则表达式实例2

购物提交订单时会生成一个订单编号,那么接口自动化测试时,要根据这个订单编号去进行支付等。这时要动态取值,即用到正则表达式去动态匹配需要的这个订单编号。

---------接口以及返回的响应数据如下:---------

 http://192.168.215.55/buyer/cart/submit.do?goodsids=20394
{"msg":"成功","data":{"goodsStatusResult":1,"receiverInfo":{"id":"661","name":"test123","province":"4524130","city":"4524157","district":"4524163","defaultDeliverySeq":"1","preOrderSN":"1000160_240_1","toHome":"0"}],"totalFee":"359.00","totalCount":"1"}],"receipt":{"type":"2","typeName":"公司","title":"test","receiptId":"70","receiptContent":""},"activityList":[{"activityId":"0","activityName":"默认"}]},"state":0}

调用如下包含正则表达式的汗数,则可以得到preOrderSN为

1000160_240_1


------------基于python的函数如下----------

#预提交订单参数取动态值,订单编号preOrderSN,引用时比如strinfo = re.compile('{preOrderSN}')  

#-------------------------------。

def preOrderSN(results):                                 

    global preOrderSN

#-预提交订单取值的正则表达式,左匹配"preOrderSN":" 右匹配"toHome"

    regx ='.*"preOrderSN":"(.*)","toHome"'               

    pm =re.search(regx, results)

#-------------------------------。

    if pm:

 #------如果匹配到则转换为中文并返回值-----------

       preOrderSN = pm.group(1).encode('utf-8')         

       return preOrderSN

 #-------------------------------。

    returnFalse


相关文章
|
3月前
|
Python
"揭秘!Python如何运用神秘的正则表达式,轻松穿梭于网页迷宫,一键抓取隐藏链接?"
【8月更文挑战第21天】Python凭借其强大的编程能力,在数据抓取和网页解析领域表现出高效与灵活。通过结合requests库进行网页请求及正则表达式进行复杂文本模式匹配,可轻松提取网页信息。本示例展示如何使用Python和正则表达式解析网页链接。首先确保已安装requests库,可通过`pip install requests`安装。接着,利用requests获取网页内容,并使用正则表达式提取所有`<a>`标签的`href`属性。
42 0
|
24天前
|
Python
【收藏备用】Python正则表达式的7个实用技巧
【收藏备用】Python正则表达式的7个实用技巧
18 1
|
28天前
|
数据安全/隐私保护 Python
Python实用正则表达式归纳
Python实用正则表达式归纳
|
1月前
|
Python
Python 正则表达式高级应用指南
正则表达式是文本模式匹配的强大工具,Python 的 `re` 模块支持其操作。本文介绍正则表达式的高级应用,包括复杂模式匹配(如邮箱、电话号码)、分组与提取、替换操作、多行匹配以及贪婪与非贪婪模式的区别。通过示例代码展示了如何灵活运用这些技巧解决实际问题。
24 7
|
25天前
|
JavaScript 前端开发 Scala
Python学习十:正则表达式
这篇文章是关于Python中正则表达式的使用,包括re模块的函数、特殊字符、匹配模式以及贪婪与非贪婪模式的详细介绍。
14 0
|
30天前
|
数据采集 开发者 Python
Python正则表达式之re.compile函数
`re.compile`是Python正则表达式处理中一个强大的工具,它通过预先编译正则表达式,不仅提升了执行效率,还增强了代码的组织性和可读性。掌握其使用,对于涉及文本分析、数据清洗、日志处理等领域的Python开发者来说,是非常必要的技能。正确并高效地应用这一功能,可以显著提升程序的性能和维护性。
42 0
|
2月前
|
索引 Python
30天拿下Python之正则表达式
30天拿下Python之正则表达式
15 0
|
2月前
|
数据采集 Python
Python正则表达式提取车牌号
Python正则表达式提取车牌号
|
2月前
|
数据采集 Python
Python正则表达式提取车牌号
Python正则表达式提取车牌号
|
2月前
|
存储 数据处理 Python
Python中利用正则表达式进行文本处理
【9月更文挑战第24天】本文通过深入浅出的方式,介绍如何在Python中使用正则表达式进行文本处理。我们将从基础语法开始,逐步深入到复杂匹配模式的构建,最后通过实际案例展示正则表达式在文本分析中的高效应用。文章旨在帮助读者掌握正则表达式的使用技巧,提高数据处理效率。