天天看點

從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+)?$                                           //值類型正規表達式

token在app登入後,相當于一個憑條,代表了該使用者的唯一通行證,放到header裡面傳遞到另外的接口。

---------接口以及傳回的響應資料如下:---------

調用如下包含正規表達式的汗數,則可以得到token為

------------基于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

購物送出訂單時會生成一個訂單編号,那麼接口自動化測試時,要根據這個訂單編号去進行支付等。這時要動态取值,即用到正規表達式去動态比對需要的這個訂單編号。

調用如下包含正規表達式的汗數,則可以得到preOrderSN為

#預送出訂單參數取動态值,訂單編号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

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