从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


 

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容

  • 正则表达式到底是什么东西?字符是计算机软件处理文字时最基本的单位,可能是字母,数字,标点符号,空格,换行符,汉字等...
    狮子挽歌阅读 2,134评论 0 9
  • 推荐几个正则表达式编辑器 Debuggex :https://www.debuggex.com/ PyRegex:...
    木易林1阅读 11,452评论 9 151
  • 几个正则表达式编辑器 Debuggex :https://www.debuggex.com/ PyRegex:ht...
    没技术的BUG开发攻城狮阅读 4,581评论 0 23
  • Java的正则表达式讲解:(为了能看清,本文正则表达式用中文的句号代替英文句点) 英文句点符号:匹配单个任意字符。...
    红姑娘阅读 4,308评论 0 2
  • 初衷:看了很多视频、文章,最后却通通忘记了,别人的知识依旧是别人的,自己却什么都没获得。此系列文章旨在加深自己的印...
    DCbryant阅读 3,981评论 0 20