python正則表達式

字符串是編程時涉及到的最多的一種數(shù)據(jù)結(jié)構(gòu),對字符串進行操作的需求幾乎無處不在。比如判斷一個字符串是否是合法的Email地址,雖然可以編程提取@前后的子串,再分別判斷是否是單詞和域名,但這樣做不但麻煩,而且代碼難以復用。
正則表達式是一種用來匹配字符串的強有力的武器。它的設計思想是用一種描述性的語言來給字符串定義一個規(guī)則,凡是符合規(guī)則的字符串,我們就認為它“匹配”了,否則,該字符串就是不合法的。


>>>import re
>>>re.match('.','abc')
<_sre.SRE_Match object; span=(0, 1), match='a'>
>>>re.match('.','abc').group()
'a'



匹配網(wǎng)址:

import re
addr = input('請輸入網(wǎng)址:')
print(re.match('\w{4,20}@163\.com$',addr))

結(jié)果如下:






search
需求:匹配出文章閱讀的次數(shù)



findall
需求:統(tǒng)計出python、c、c++相應文章閱讀的次數(shù)

sub 將匹配到的數(shù)據(jù)進行替換
需求:將匹配到的閱讀次數(shù)加1

方案一:



方案二:
import re


def add(temp):
    strNum = temp.group()
    num = int(strNum) + 1
    return str(num)


ret = re.sub(r"\d+", add, "python = 997")
print(ret)

ret = re.sub(r"\d+", add, "python = 99")
print(ret)

結(jié)果如下:



從下面的字符串中取出文本

<div>
        <p>崗位職責:</p>
<p>完成推薦算法、數(shù)據(jù)統(tǒng)計、接口、后臺等服務器端相關(guān)工作</p>
<p><br></p>
<p>必備要求:</p>
<p>良好的自我驅(qū)動力和職業(yè)素養(yǎng),工作積極主動、結(jié)果導向</p>
<p>&nbsp;<br></p>
<p>技術(shù)要求:</p>
<p>1、一年以上 Python 開發(fā)經(jīng)驗,掌握面向?qū)ο蠓治龊驮O計,了解設計模式</p>
<p>2、掌握HTTP協(xié)議,熟悉MVC、MVVM等概念以及相關(guān)WEB開發(fā)框架</p>
<p>3、掌握關(guān)系數(shù)據(jù)庫開發(fā)設計,掌握 SQL,熟練使用 MySQL/PostgreSQL 中的一種<br></p>
<p>4、掌握NoSQL、MQ,熟練使用對應技術(shù)解決方案</p>
<p>5、熟悉 Javascript/CSS/HTML5,JQuery、React、Vue.js</p>
<p>&nbsp;<br></p>
<p>加分項:</p>
<p>大數(shù)據(jù),數(shù)理統(tǒng)計,機器學習,sklearn,高性能,大并發(fā)。</p>

        </div>


使用劃紅線的正則表達式可以完成文本的抽取。
有一批網(wǎng)址:
http://www.interoem.com/messageinfo.asp?id=35
http://3995503.com/class/class09/news_show.asp?id=14
http://lib.wzmc.edu.cn/news/onews.asp?id=769
http://www.zy-ls.com/alfx.asp?newsid=377&id=6
http://www.fincm.com/newslist.asp?id=415
需要 正則后為:
http://www.interoem.com/
http://3995503.com/
http://lib.wzmc.edu.cn/
http://www.zy-ls.com/
http://www.fincm.com/

import re

s = '''http://www.interoem.com/messageinfo.asp?id=35
http://3995503.com/class/class09/news_show.asp?id=14
http://lib.wzmc.edu.cn/news/onews.asp?id=769
http://www.zy-ls.com/alfx.asp?newsid=377&id=6
http://www.fincm.com/newslist.asp?id=415'''
ret = re.findall(r'http.+\.[a-z]{2,3}/', s)
for i in ret:
    print(i)

split
根據(jù)匹配進行切割字符串,并返回一個列表
需求:切割字符串“info:xiaoZhang 33 shandong”


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容