您好,登錄后才能下訂單哦!
#day-2
'''
author:hello-python
date:2019.1.15
goal:正則表達式
'''
import re
line01 = 'hellopython'
def regtest(reg_str,line = line01):
test = re.match(reg_str, line)
if test:
print(test.group(1))
else:
print("匹配失敗!")
# + :表示前面的字符,至少出現一次
reg_str04 = '.*(h.+l).*' # (b.+b)表示b與b之間至少有一個字符
regtest(reg_str04) # result : bcxb
#{n} ;控制前面字符出現次數
#a{2}:表示a出現次數
#b{3,4} :表示b至少出現3次最多出現4次
#c{4,}:表示c至少出現4次
reg_str05 = '.*(b.{2}b).*' #(b.{2}b) 表示匹配到b與b之間,只有兩個字符;
reg_str06 = '.*(b.{3,4}b).*' #(b.{3,4}b) 表示b與b之間匹配到3到4個字符;
reg_str07 = '.*(b.{4,}b).*' #(b.{4,}b) 表示b與b之間至少4個字符;
# | :表示 或
#(abc|123) : 表示匹配到abc或者123,都算匹配成功
reg_str08='.*(hel|abc)'
reg_str09='.*(abc|hel)'
#[]:表示 里面包含的內容都可以進行匹配,包含內容只有表面字符含義
#[abcd]:表示 只要這個字符為a/b/c/d中的一個都可以匹配成功
#[0-9] :表示 只要這個字符在0-9 區間內,都可以匹配成功
#[^x]:表示匹配 字符不為x
line02='電話:17629261608'
reg_str10='.*(1[76][0-9]{9}).*'
reg_str11='.*(1[76][^1]{9}).*'
regtest(reg_str10,line02) # result :17629261608
regtest(reg_str11,line02) # result : 匹配失敗!
# \s 表示匹配空格,匹配一次
# \S 表示匹配不是空格的字符,匹配一次
#\w 表示匹配 A-Z、0-9、_ 中的容易字符,匹配一次
#\W與\w 相反
#\d 表示數字
# [\u4E00-\u9FA5] : 表示所有漢字,unicode 編碼
def regtest_test(reg_str,line=line01):
test = re.match(reg_str,line)
if test:
print(test.group(1)+':' +test.group(2)+ '-'+test.group(3)+ '-'+test.group(4))
else:
print("匹配失敗~!")
#簡單實例:
str01 = '小王出生于2000年2月2日'
str02 = '小劉出生于2001-01-20'
str03 = '小娟出生于1999/9/9'
str04 = '小敏出生于1998.8.5'
str = [str01,str02,str03,str04]
#提取出姓名+出生日期
#匹配模式
reg_str12 = '(.*)出生于(\d{4})[.年/-](\d{1,2})[.月/-](\d{1,2}).*?'
for i in range(4):
regtest_test(reg_str12,str[i])
執行結果
小王:2000-2-2
小劉:2001-01-20
小娟:1999-9-9
小敏:1998-8-5
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。