国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

python大佬養(yǎng)成計劃----正則表達式

aikin / 1908人閱讀

摘要:正則模塊使語言擁有全部的正則表達式功能。函數(shù)根據(jù)一個模式字符串和可選的標(biāo)志參數(shù)生成一個正則表達式對象。該對象擁有一系列方法用于正則表達式匹配和替換。表示或者匹配項未找到匹配項匹配項未找到匹配項

正則

re = regular experssion
re 模塊使 Python 語言擁有全部的正則表達式功能。
compile 函數(shù)根據(jù)一個模式字符串和可選的標(biāo)志參數(shù)生成一個正則表達式對象。該對象擁有一系列方法用于正則表達式匹配和替換。

作用: 對于字符串進行處理, 會檢查這個字符串內(nèi)容是否與你寫的正則表達式匹配

如果匹配, 拿出匹配的內(nèi)容;
如果不匹配, 忽略不匹配內(nèi)容;

編寫正則的規(guī)則

pattern 匹配的正則表達式
string 要匹配的字符串
三種查找方法
1). findall
import re

str = "hello sheen,hello cute."

pattern_1 = r"hello"
pattern_2 = r"sheen"
print(re.findall(pattern_1,str))    #["hello", "hello"]
print(re.findall(pattern_2,str))    #["sheen"]
2).match

match嘗試從字符串的起始位置開始匹配,

如果起始位置沒有匹配成功, 返回一個None;

如果起始位置匹配成功, 返回一個對象;

import re

str = "hello sheen,hello cute."

pattern_1 = r"hello"
pattern_2 = r"sheen"
print(re.match(pattern_1,str))           #<_sre.SRE_Match object; span=(0, 5), match="hello">
print(re.match(pattern_1,str).group())   #返回match匹配的字符串內(nèi)容,hello
print(re.match(pattern_2,str))           #None
3).search

search會掃描整個字符串, 只返回第一個匹配成功的內(nèi)容;

如果能找到, 返回一個對象, 通過group方法獲取對應(yīng)的字符串;

import re

str = "hello sheen,hello cute."

pattern_1 = r"hello"
pattern_2 = r"sheen"
print(re.search(pattern_1,str))             #<_sre.SRE_Match object; span=(0, 5), match="hello">
print(re.search(pattern_1,str).group())     #hello
print(re.search(pattern_2,str))             #<_sre.SRE_Match object; span=(6, 11), match="sheen">
print(re.search(pattern_2,str).group())     #sheen
特殊字符類
.: 匹配除了
之外的任意字符; [.
]
d:  digit--(數(shù)字), 匹配一個數(shù)字字符, 等價于[0-9]
D: 匹配一個非數(shù)字字符, 等價于[^0-9]
s:  space(廣義的空格: 空格, 	, 
, 
), 匹配單個任何的空白字符;
S:  匹配除了單個任何的空白字符;
w:  字母數(shù)字或者下劃線, [a-zA-Z0-9_]
W: 除了字母數(shù)字或者下劃線, [^a-zA-Z0-9_]
import re

# .
print(re.findall(r".","sheen
star
"))     #["s", "h", "e", "e", "n", "s", "t", "a", "r"]

#d#D
print(re.findall(r"d","當(dāng)前聲望30"))       #["3", "0"]
print(re.findall(r"D","當(dāng)前聲望30"))       #["當(dāng)", "前", "聲", "望"]

#s#S
print(re.findall(r"s", "
當(dāng)前
聲望	為30"))     #["
", "
", "	"]
print(re.findall(r"S", "
當(dāng)前
聲望	為30"))     #["當(dāng)", "前", "聲", "望", "為", "3", "0"]

#w#W
print(re.findall(r"w","lucky超可愛!!"))           #["l", "u", "c", "k", "y", "超", "可", "愛"]
print(re.findall(r"W","lucky超可愛!!"))           #["!", "!"]

指定字符出現(xiàn)次數(shù)

匹配字符出現(xiàn)次數(shù):

*: 代表前一個字符出現(xiàn)0次或者無限次;    d*,  .*
+: 代表前一個字符出現(xiàn)一次或者無限次;     d+
?: 代表前一個字符出現(xiàn)1次或者0次;   假設(shè)某些字符可省略, 也可以不省略的時候使用

第二種方式:

{m}: 前一個字符出現(xiàn)m次;
{m,}: 前一個字符至少出現(xiàn)m次;  * == {0,}; + ==={1,}
{m,n}: 前一個字符出現(xiàn)m次到n次; ? === {0,1}

import re

#* 代表前一個字符出現(xiàn)0次或者無限次
print(re.findall(r"s*","sheenstar"))        #["s", "", "", "", "", "s", "", "", "", ""]
print(re.findall(r"s*","hello"))            #["", "", "", "", "", ""]

#+ 代表前一個字符出現(xiàn)一次或者無限次
print(re.findall(r"s+","sheenstar"))        #["s", "s"]
print(re.findall(r"s+","hello"))            #[]

# ? 代表前一個字符出現(xiàn)1次或者0次
print(re.findall(r"188-?", "188 6543"))     #["188"]
print(re.findall(r"188-?", "188-6543"))     #["188-"]
print(re.findall(r"188-?", "148-6543"))     #[]


# 匹配電話號碼
pattern = r"d{3}[s-]?d{4}[s-]?d{4}"
print(re.findall(pattern,"188 0123 4567"))      #["188 0123 4567"]
print(re.findall(pattern,"188-0123-4567"))      #["188-0123-4567"]
print(re.findall(pattern,"18801234567"))        #["188-0123-4567"]
練習(xí)--匹配IP

可以從網(wǎng)上搜索正則表達式生成器,使用別人寫好的規(guī)則,自己測試。

import re

# | 表示或者
pattern = r"(25[0-5]|2[0-4]d|[0-1]d{2}|[1-9]?d).(25[0-5]|2[0-4]d|[0-1]d{2}|[1-9]?d).(25[0-5]|2[0-4]d|[0-1]d{2}|[1-9]?d).(25[0-5]|2[0-4]d|[0-1]d{2}|[1-9]?d)$"

print(re.findall(pattern,"172.25.254.34"))  #[("172", "25", "254", "34")]

matchObj_1 = re.match(pattern,"172.25.254.34")
if matchObj_1:
    print("匹配項:",matchObj_1.group())                     #172.25.254.34
else:
    print("未找到匹配項")

matchObj_2 = re.match(pattern,"172.25.254.343")
if matchObj_2:
    print("匹配項:",matchObj_2.group())                     
else:
    print("未找到匹配項")

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/44827.html

相關(guān)文章

  • python大佬養(yǎng)成計劃----flask應(yīng)用(表單)

    摘要:特別是可以訪問請求提交的表單數(shù)據(jù)。表單的代碼生成和驗證提交的表單數(shù)據(jù)就是兩個很好的例子。優(yōu)勢擴展使得處理表單能獲得更愉快的體驗。設(shè)計了表單庫來使可以更加簡便地管理操作表單數(shù)據(jù)。 1. 為什么使用Flask-WTF? request對象公開了所有客戶端發(fā)送的請求信息。特別是request.form可以訪問POST請求提交的表單數(shù)據(jù)。 盡管Flask的request對象提供的支持足以處理w...

    alighters 評論0 收藏0
  • python大佬養(yǎng)成計劃----Django圖書人物適配系統(tǒng)(前端)

    摘要:兩者相同的地方是都可以將一個普通函數(shù)變成視圖函數(shù)。不同的是,使用裝飾器定義路由,而使用正則表達式定義路由。中間什么都沒有,表示這個正則匹配的是根目錄,。最后修改的網(wǎng)頁顯示如圖項目框架圖 Django添加路由 與flask一樣,django也需要使用路由將URL與服務(wù)端要執(zhí)行的代碼關(guān)聯(lián)。 兩者相同的地方是都可以將一個普通函數(shù)變成視圖函數(shù)。不同的是,flask使用裝飾器@app.route...

    amuqiao 評論0 收藏0
  • python大佬養(yǎng)成計劃----HTML DOM

    摘要:定義了所有元素的對象和屬性,以及訪問它們的方法。換言之,是關(guān)于如何獲取修改添加或刪除元素的標(biāo)準。根據(jù)標(biāo)準,中所有內(nèi)容都是節(jié)點。好比我有兩個下拉列表,第一列表是選擇省份,那么我選擇某一個省份,那么另一個列表也會對應(yīng)顯示該省份的城市。 什么是DOM? DOM (Document Object Model) 譯為文檔對象模型,是 HTML 和 XML 文檔的編程接口。HTML DOM 定義了...

    leejan97 評論0 收藏0

發(fā)表評論

0條評論

aikin

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<