中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python正則表達式舉例分析

發布時間:2021-11-25 11:18:17 來源:億速云 閱讀:146 作者:iii 欄目:互聯網科技

這篇文章主要講解了“python正則表達式舉例分析”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“python正則表達式舉例分析”吧!

請嘗試計算字符串四則運算式。注意代碼內可使用2個數的±*/,但不能用python的表達式功能運算表達式,也不能用eval函數運算。字符串四則運算式示例如下:

compute = '10-3*(20-10+(-10/5)*27/3/3-(-100)/(10-3*5))+(-2.5*-12)'

練習第一步,匹配數字:

匹配數字(含正整數、負整數、正浮點數、負浮點數):

-?\d+(\.\d+)?

可以測試匹配123、-123、1.23、-1.23均成功。

表達式解析

-?表示匹配-,?表示0個或1個。

\d+表示匹配數字,+表示1個或多個。

(\.\d+)?這部分最復雜,一步步來解釋。括號內是\.表示匹配小數點(若不加\則會匹配為除換行符外任意字符);\d+同上;一對圓括號后面跟?表示這些內容可能不出現或出現1次,意思是可以匹配小數點及后面1個或多個數字也匹配無小數點及后面的數字。

上述正則表達式經站長工具網站測試沒有問題,但是在python中代碼中會有問題,請看下面的代碼示例:

num1 = 'The number is 123 ?'num2 = 'The number is -123 ?'num3 = 'The number is 1.23 ?'num4 = 'The number is -123 ?'dig1 = re.compile('-?\d+(\.\d+)?')dig2 = re.compile('-?\d+(?:\.\d+)?')print(dig1.findall(num1))print(dig1.findall(num2))print(dig1.findall(num3))print(dig1.findall(num4))print(dig2.findall(num1))print(dig2.findall(num2))print(dig2.findall(num3))print(dig2.findall(num4))out:['']['']['.23']['']['123']['-123']['1.23']['-123']

認真閱讀代碼,可以看到findall函數使用dig1正則表達式字符串提取不到數字,而dig1正則表達式明明已經驗證過是正確的,為什么會提取不到數字呢?

這其中的原因是因為分組概念沖突!正則表達式的分組使用圓括號表示,而re模塊的分組也使用圓括號表示,請認真理解這2種分組概念是不同的之處,非常重要!!!

正則表達式的分組是把某一段表達式進行整體包裝,然后可對該整體做操作,如或|和范圍.?*{m,n}。

re模塊的分組是指對正則表達式匹配的內容再次篩選,只需要分組內匹配的部分內容。

解決方法是對正則表達式的分組左括號后面加?:實施分組隱藏,告訴python解釋器這個分組不是使用再次篩選的意思。

練習第二步,匹配內層括號中的內容

接下來嘗試匹配四則運算字符串中內層括號之中的內容:

compute = '10-3*(20-10+(-10/5)*27/3/3-(-100)/(10-3*5))+(-5*-6)'

匹配最內層括號

\([\d.*/±]+?\)

在站長工具網站測試可以成功匹配出以下內容:

(-10/5)、(-100)、(10-3*5)、(-5*-6)

表達式解析

先匹配外面的圓括號,注意都要用\轉義,然后觀察目標字符串的規律填寫括號中的內容。

括號中可以有的字符集是數字、小數點、加、減、乘、除,可以出現1次或多次,注意必須加在量詞+后面寫?標識為最短匹配。

再到python中測試正則表達式。

compute = '10-3*(20-10+(-10/5)*27/3/3-(-100)/(10-3*5))+(-5*-6)'result = re.findall('\([\d\.*/+-]+?\)', compute)print(result)out:['(-10/5)', '(-100)', '(10-3*5)', '(-5*-6)']

練習第三步,編寫計算字符串四則運算式代碼

寫代碼以前我以為頂多半個小時搞定,結果被打臉了。寫代碼用了不到半個小時,調試用了一個多小時!前后2個小時才搞定。真的是看著容易做起來難!建議學python的朋友嘗試做一下這個練習。做這個練習對于掌握正則表達式和鍛煉編程能力很有幫助。

編程思路、代碼、調試過程我決定過幾天再公布。今天先貼一張運算結果的圖。
python正則表達式舉例分析

感謝各位的閱讀,以上就是“python正則表達式舉例分析”的內容了,經過本文的學習后,相信大家對python正則表達式舉例分析這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

连云港市| 班戈县| 贺兰县| 海林市| 祁阳县| 荆州市| 新民市| 凤庆县| 望江县| 南投市| 莆田市| 游戏| 淄博市| 福清市| 宜章县| 香河县| 临泉县| 石门县| 合阳县| 特克斯县| 沧州市| 沛县| 淳安县| 区。| 尖扎县| 临猗县| 巨鹿县| 抚宁县| 客服| 搜索| 乌鲁木齐市| 大兴区| 潮安县| 庐江县| 巴马| 临泽县| 宝兴县| 松阳县| 绥化市| 玉门市| 洛阳市|