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



为什么要用正则表达式

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

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

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



正则表达式字符串匹配

"^\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}.)|(([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])$" //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',sans-serif; font-size:16px; max-width:100%!important; word-wrap:break-word!important"> }#参数为登录手机号和密码

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":"默认"}]},sans-serif; font-size:16px; max-width:100%!important; word-wrap:break-word!important"> 调用如下包含正则表达式的汗数,则可以得到preOrderSN为

1000160_240_1


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

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

def preOrderSN(results):

global preOrderSN

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

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

ottom:0px; padding-top:0px; padding-bottom:0px; clear:both; min-height:1em; color:rgb(62,results)

if pm:

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

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

return preOrderSN

returnFalse

从0开始学正则表达式-基于python的更多相关文章

  1. canvas中普通动效与粒子动效的实现代码示例

    canvas用于在网页上绘制图像、动画,可以将其理解为画布,在这个画布上构建想要的效果。本文详细的介绍了粒子特效,和普通动效进行对比,非常具有实用价值,需要的朋友可以参考下

  2. H5混合开发app如何升级的方法

    本篇文章主要介绍了H5混合开发app如何升级的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  3. canvas学习和滤镜实现代码

    这篇文章主要介绍了canvas学习和滤镜实现代码,利用 canvas,前端人员可以很轻松地、进行图像处理,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  4. HTML5数字输入仅接受整数的实现代码

    这篇文章主要介绍了HTML5数字输入仅接受整数的实现代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  5. localStorage的过期时间设置的方法详解

    这篇文章主要介绍了localStorage的过期时间设置的方法详解的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  6. 详解HTML5 data-* 自定义属性

    这篇文章主要介绍了详解HTML5 data-* 自定义属性的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  7. HTML5的postMessage的使用手册

    HTML5提出了一个新的用来跨域传值的方法,即postMessage,这篇文章主要介绍了HTML5的postMessage的使用手册的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  8. 教你使用Canvas处理图片的方法

    本篇文章主要介绍了教你使用Canvas处理图片的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  9. ios – 使用大写符号在字符串swift中获取URL的正则表达式

    我尝试在文本中获取URL.所以,在此之前,我使用了这样一个表达式:但是当用户输入带有大写符号的URL时(例如Http://Google.com,它与它不匹配)我遇到了问题.我试过了:但什么都没发生.解决方法您可以使用正则表达式中的i内联标志关闭区分大小写,有关可用正则表达式功能的详细信息,请参阅FoundationFrameworkReference.(?ismwx-ismwx)Flagsetti

  10. ios – Swift语言:如何调用SecRandomCopyBytes

    从Objective-C,我可以这样做:在Swift中尝试这个时,我有以下内容:但我得到这个编译器错误:data.mutableBytes参数被拒绝,因为类型不匹配,但我无法弄清楚如何强制参数.解决方法这似乎有效:

随机推荐

  1. 法国电话号码的正则表达式

    我正在尝试实施一个正则表达式,允许我检查一个号码是否是一个有效的法国电话号码.一定是这样的:要么:这是我实施的但是错了……

  2. 正则表达式 – perl分裂奇怪的行为

    PSperl是5.18.0问题是量词*允许零空间,你必须使用,这意味着1或更多.请注意,F和O之间的空间正好为零.

  3. 正则表达式 – 正则表达式大于和小于

    我想匹配以下任何一个字符:或=或=.这个似乎不起作用:[/]试试这个:它匹配可选地后跟=,或者只是=自身.

  4. 如何使用正则表达式用空格替换字符之间的短划线

    我想用正则表达式替换出现在带空格的字母之间的短划线.例如,用abcd替换ab-cd以下匹配字符–字符序列,但也替换字符[即ab-cd导致d,而不是abcd,因为我希望]我如何适应以上只能取代–部分?

  5. 正则表达式 – /bb | [^ b] {2} /它是如何工作的?

    有人可以解释一下吗?我在t-shirt上看到了这个:它似乎在说:“成为或不成为”怎么样?我好像没找到’e’?

  6. 正则表达式 – 在Scala中验证电子邮件一行

    在我的代码中添加简单的电子邮件验证,我创建了以下函数:这将传递像bob@testmymail.com这样的电子邮件和bobtestmymail.com之类的失败邮件,但是带有空格字符的邮件会漏掉,就像bob@testmymail也会返回true.我可能在这里很傻……当我测试你的正则表达式并且它正在捕捉简单的电子邮件时,我检查了你的代码并看到你正在使用findFirstIn.我相信这是你的问题.findFirstIn将跳转所有空格,直到它匹配字符串中任何位置的某个序列.我相信在你的情况下,最好使用unapp

  7. 正则表达式对小字符串的暴力

    在测试小字符串时,使用正则表达式会带来性能上的好处,还是会强制它们更快?不会通过检查给定字符串的字符是否在指定范围内比使用正则表达式更快来强制它们吗?

  8. 正则表达式 – 为什么`stoutest`不是有效的正则表达式?

    isthedelimiter,thenthematch-only-onceruleof?PATTERN?

  9. 正则表达式 – 替换..与.在R

    我怎样才能替换..我尝试过类似的东西:但它并不像我希望的那样有效.尝试添加fixed=T.

  10. 正则表达式 – 如何在字符串中的特定位置添加字符?

    我正在使用记事本,并希望使用正则表达式替换在字符串中的特定位置插入一个字符.例如,在每行的第6位插入一个逗号是什么意思?如果要在第六个字符后添加字符,请使用搜索和更换从技术上讲,这将用MatchGroup1替换每行的前6个字符,后跟逗号.

返回
顶部