正則函式及物件導向開發初識 day19

2022-06-24 22:48:14 字數 4344 閱讀 6961

1.正則函式

#

### 正則函式

importre#

search 通過正則匹配出第乙個物件返回,通過group取出物件中的值

strvar = "

1+2 3*4

"obj = re.search("

\d+(.*?)\d+

",strvar)

#返回匹配到的內容(匹配到乙個就返回)

print(obj.group()) #

1+2#

把括號裡匹配到的內容扔到元組中返回

res =obj.groups()

print

(res)

#match 驗證使用者輸入內容(了解)

"""search 只要在正規表示式的前面加上^ 就和match一模一樣

"""strvar = "

y13566688771

"strvar = "

13566688771

"obj = re.search("

^\d+

",strvar)

print(obj.group()) #

13566688771

obj = re.match("

\d+"

,strvar)

print

(obj,group())

#split 切割

strvar = "

alex|xboy&wusir-egon

"res = re.split("

[|&-]

",strvar)

print(res) #

['alex', 'xboy', 'wusir', 'egon']

strvar = "

alex23423411122334xboyww90909045wusir78

"res = re.split("

\d+"

,strvar)

print(res) #

['alex', 'xboyww', 'wusir', ''] #這後面還有個空格

#sub 替換(正規表示式,替換的字串,原字串,[可選替換的次數])

strvar = "

alex|xboy&wusir-egon"#

strvar.replace("|","%")

#strvar.replace("&","%")

#strvar.replace("-","%")

res = re.sub("

[|&-]

","%

",strvar)

print(res) #

alex%xboy%wusir%egon

res = re.sub("

[|&-]

",strvar,1)

print(res) #

alex%xboy&wusir-egon 字串

#subn 替換與sub用法一樣,區別在於返回值不同,返回的是元組

res = re.subn("

[|&-]

","%

",strvar)

print(res) #

('alex%xboy%wusir%egon', 3) #返回的第二個引數為修改的次數

res = re.subn("

[|&-]

","%

",strvar,1)

print(res) #

('alex%xboy&wusir-egon', 1)

#finditer 匹配字串中相應的內容 返回迭代器

from collections import

iterator

strvar = "

sdfasf234234你好23423

"it = re.finditer(r"

\d+"

,strvar)

print(isinstance(it,iterator)) #

true

"""lst = list(it)

print(lst)

[<_sre.sre_match object; span=(6, 12), match='234234'>,

<_sre.sre_match object; span=(14, 19), match='23423'>

]234234

23423

"""for i in

it:

print

(i.group())

#compile 指定乙個統一的匹配規則

'''正常情況下,正規表示式執行一次,編譯一次

如果需要反覆使用,會浪費系統資源,比如記憶體,cpu

compile 可以使正則編譯一次,終身受益,無需反覆編譯

'''strvar = "

sdfasf234234你好23423

"pattern = re.compile("

\d+"

)print(pattern) #

# re.compile('\\d+')

obj =pattern.search(strvar)

print(obj.group()) #

# 234234

lst =pattern.findall(strvar)

print(lst) #

['234234', '23423']

#修飾符

#re.i 使匹配對大小寫不敏感

strvar = "

",flags=re.i)

obj =pattern.search(strvar)

print

(obj)

print(obj.group()) #

#re.m 使每一行都能夠單獨匹配(多行匹配) 影響 ^ 和 $

strvar = """

123"""

pattern = re.compile("

^<.*?>(?:/*?)<.*?>$

",flags=re.m)

print(pattern.findall(strvar)) #

['', '', '123']#

re.s 使 . 匹配包括換行在內的所有字元

strvar = """

give

1112233mefive

"""pattern = re.compile("

(.*?)mefive

",flags=re.s)

obj =pattern.search(strvar)

print

(obj.group())

"""give

1112233mefive

"""

2.物件導向初始

#

###oop 物件導向程式開發

#(1) 類的定義

class

car:

pass

class car(): #

推薦pass

class

car(object):

pass

#(2) 類的例項化

class

car():

pass

obj = car() #

類名加() => 例項化乙個物件

#(3)類的基本結構

'''類中只有2種成員

(1)成員屬性

(2)成員方法

'''class

car():

#成員屬性

color = "

屎黃色的"#

成員方法

deffunc(self):

print("

小車會跑")

#反例'''類中的**可以直接指向,但是嚴禁使用,不要直接把**裸露在類中

應該把相應的邏輯放在成員方法當中處理

'''class

car():

if r == 5:

print(4567)

#正確方法

class

car():

deffunc(self):

if 5 == 5:

print(4567)

#(4) 類的命名

'''類的命名推薦使用大駝峰命名法

mycar => mycar

dahuangfeng => dahuangfeng

'''#物件導向總結:

面向過程:

(1)優點:效率高,執行速度快

(2)缺點:維護性差,移植性差,表達不出一類的語意

物件導向:

(1)優點:可讀性,可移植性,可維護性高

(2)缺點:執行效率稍慢

JavaScript物件及初識物件導向

建立物件的兩種方法 方法 1 var flower new object flower.name 張三 flower.pwd admin flower.show function 方法 2 var flower 建構函式 function flower name,pwd var flower new...

JavaScript物件及初識物件導向

自定義物件 基於object物件的方式建立物件 var 物件名稱 new object var flower new object flower.name 長春花 flower.genera 夾竹桃科 長春花屬 flower.area 非洲 帶 熱帶以及中國大陸的華東 西南 中南等地 flower....

JavaScript物件及初識物件導向

number 數值型別 string 字串型別 boolean 布林型別 null 空型別 undefined 未定義型別 object 語法 var 物件名稱 new object var flower new object flower.name 長春花 flower.genera 夾竹桃科 長...