1.模式(規則)
2.文字
import re
import requests
# match 匹配,必須從文字的頭開始匹配
# search 搜尋,可以從任意位置開始匹配
# .*?裡的.是指任意字元,但只是乙個字元,*代表前面的字元出現零次或者多次,問號表示懶惰模式,匹配乙個就不匹配了
text =
'kkgig'
text1 =
'sjlafdhoisf'
r_text = re.match(
'(.*)(gig)'
, text)
r_text1 = re.search(
'jla'
, text1)
print
(r_text.group(1)
)# 列印第乙個括號裡的內容
print
(r_text.group(2)
)print
(r_text1.group(0)
)
import re
line =
'huang123'
# 1.以h開頭
pattern =
'^h'
# ^號代表必須以後面的字元作為開頭
# 2.以h開頭後面跟著乙個字元
pattern =
'^h.'
# 3.以h開頭後面跟著任意數量的數字
pattern =
'^h\d*'
# \d表示數字
# 4.以3結尾
pattern =
'3$'
# $表示這個符號前面的內容是結尾的內容
# 5.以h開頭,以3結尾,中間只有乙個字元
pattern =
'^h.3$'
# 6.以h開頭,以3結尾,中間只有乙個字元
pattern =
'^h.*3$'
# .能夠匹配到任意字元,除了:\n,如果需要,新增re.s的標誌
response = re.match(pattern, line, re.s)
response = re.match(pattern, line)
print
(response)
import re
line =
'hahahahaha'
# 1.匹配第乙個h和第二個h之間的內容
# 2.使用非貪婪限定符
pattern =
'^h.*?h'
# * 作為前面的字元出現多次的限定符,它是盡量多的匹配內容,貪婪模式
# ?就是非貪婪字元
res = re.search(pattern, line)
print
(res)
# * 表示0到無窮個
# ?表示0到1個 如.?表示出現了0次或一次
# 如果?前面是字元,那麼代表0-1個前面字元,如果前面是個數的限定符,就是非貪婪模式
# 獲取h和h之間,需要包含特定數量字元的子串
pattern =
'h.h'
# h和h之間有4到6個字元,但這也是貪婪模式,加問號非貪婪
# 使用+表示h和h之間至少有乙個字元
pattern =
'h.h'
# 1,什麼都不寫,表示無窮
# . == +,+ 表示前面的字元出現1到無窮次
# 0-無窮
# + ==
# * ==
# ? ==
# h == hhhhh
import re
line =
'sss127'
pattern =
'(sss|127)'
# # | 表示或者的意思,哪個在前面線匹配到則匹配哪個
res = re.search(pattern, line)
print
(res)
# 表示中括號內的字元可以被匹配 [123] = (1|2|3)
pattern =
'[123]'
res = re.search(pattern, line)
# 數字是0-9, \d == [0123456789] == [0-9]
# 所有小寫字母 [a-z] ,大寫字母[a-z]
# [a-za-z0-9_]表示數字字母下劃線
# 表示郵箱 [email protected]
# [a-za-z0-9_]+@[a-za-z0-9_]+\.com
# 想要確切匹配之前的特殊字元,就需要加轉義
# 用^表示非的功能
pattern =[^
1]# \s匹配任何空白字元,包括空格、製表符、換頁符等等。== [\f\n\r\t\v]
# \s匹配任何非空白符。== [^\f\n\r\t\v]
# \w等價於[a-za-z0-9_]
# \w與\w相反
# \d表示所有數字 == [0-9]
import re
pattern =
'[a-za-z-]+'
line =
'i want to be a coder'
# findall的作用是找到所有的匹配項
# 返回值是所有找到內容的字串的列表
words = re.findall(pattern, line)
print
(words)
# finditer
# 返回值是乙個迭代器,每次迭代的內容是sre_match
words = re.finditer(pattern, line)
for item in words:
print
(item.group(0)
)# compile的作用:能夠生成乙個類,這個類用於匹配資料,能夠性更高
# 下面的兩行**相當於上面的一行search語句
pat = re.
compile
(pattern)
res = pat.search(line)
# 類的頻繁建立和刪除會造成很大的效能問題
# 如果迴圈匹配內容的話,就需要用到compile,一般用在迴圈中,compile提出來
# sub
res = re.sub(pattern,
'words'
, line)
import re
# 匹配所有單詞的第乙個字母
line =
'i love you'
pattern =
"([a-za-z-])[a-za-z-]*"
res = re.findall(pattern, line)
print
(res)
正規表示式 正規表示式 總結
非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...
正規表示式 表示式
網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 號碼 x x x...
Linux正規表示式 編寫正規表示式
為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...