day09 正側表示式

2022-08-24 10:18:16 字數 4543 閱讀 2205

號碼正確')

break

else

:

print('

號碼錯誤')

python操作正規表示式要使用re模組。re模組包含的函式:findall,search,match,sub,subn,compile,split,finditer

findall和split把匹配結果放在列表裡面。search,match,finditer呼叫group才能取到結果。

1.findall:

import

reret = re.findall('

a','

eva agon yuan

') #

結果['a', 'a', 'a'],將後面待匹配的字串跟『a』匹配,把所有滿足條件的結果放在列表裡面。

print

(ret)

ret1 = re.findall('

[a-z]+

','eva agon yuan

') #

['eva', 'agon', 'yuan']

print

(ret1)

ret2 = re.findall('

[a-z]*

','eva agon yuan

') #

['eva', '', 'agon', '', 'yuan', '']#待匹配的字串裡面的空白符跟[a-z]*匹配了0次。所以結果有空白字串。空白符可以跟*號和?號匹配0次。

print

(ret2)

import re

def idcheck(idc):

ret = re.findall('^[1-9]\d(\d[0-9x])?$',idc) #身份證為15位數字或18位數字或17位數字加x.

if ret:

print('匹配成功')

else:

print('匹配失敗')

idcheck('111111111111111111')

2.search:
import

re ret = re.search('

a','

eva qgon yuqn

') #

從前往後,找到第乙個就返回。

if ret: #

如果找到,則返回的變數為true,呼叫group就可以拿到結果。如果沒有找到,返回none。結果是a

print(ret.group()) #

aret1 = re.search('

a','

ev1 qgon yuqn

').group() #

如果沒有找到,並且沒有使用if語句,就會報錯。所以上面程式是常用格式。

print

(ret1)

3.match:

import

re ret = re.match('

a','

abc') #

從第乙個字元開始匹配。

ifret:

print(ret.group()) #

a4.sub:

import

re ret = re.sub('

\d','

@','

4ew 5her hsdfgh5 shsr56hserh

',10) #

@ew @her hsdfgh@ shsr@@hserh ,數字替換成@,重複10次。如果不輸入重複次數,預設匹配任意多次。

print

(ret)

5.subn:

import

re ret = re.subn('

\d','

@','

4ew 5her hsdfgh5 shsr56hserh

') #

('@ew @her hsdfgh@ shsr@@hserh', 5) ,數字替換成@,返回元組,元組第乙個元素是替換的結果,第二個元素是替換的次數。

print

(ret)

6.complie:把正側編譯成物件,適用於這個正側重複使用,並且待匹配的字串特別長的情況。

import

re obj = re.compile('

\d+'

) ret = obj.findall('

ad54646ae4g awe646gaa4eg 6a4g

') #

['54646', '4', '646', '4', '6', '4']

print

(ret)

7.split: 分割結果是列表。

import

re ret = re.split('

[ab]

','fgiaklbjklae ajbag

')#['fgi', 'kl', 'jkl', 'e ', 'j', '', 'g']

print

(ret)

ret1 = re.split('

[ab]

', '

abcd

') #

先按'a'分割得到''和'bcd',再對''和'bcd'分別按'b'分割

print(ret1) #

['', '', 'cd']

8.finditer:返回乙個迭代器。節省記憶體。

import

re ret = re.finditer('

\d+','

agejlaw54564g4e')

print([i.group() for i in ret]) #

['54564', '4']

9.findall的優先順序:

['laonanhai']。findall優先把組裡的匹配結果返回。

['www.laonanhai.com']。(?:)取消優先順序。

print(ret8)

10.split的優先順序:

ret9 = re.split('

\d','

jg2jsa3gj

') #

['jg', 'jsa', 'gj'],沒有保留分割的字元。

print

(ret9)

ret10 = re.split('

(\d)

','jg2jsa3gj

') #

['jg', '2', 'jsa', '3', 'gj'],加了組,保留分割的字元。對於某些需要保留分割字元的地方是很重要的。

print(ret10)

正者表示式

返回nan代表這不是乙個蘇數 用於描述複雜規則的字串的工具 就是記錄文字規則的 字串開始位置 字串結束位置 元子符 fo fo,foo,foooo f就是前到字元 o可以無限有 fo f,fo,fooo 出現一次或多次 o 可以沒有 fo?只限定一次 限定字元 n是乙個非負整數 匹配確定n次 如 f...

Web 09 正規表示式

1 什麼是正規表示式 能讓計算機讀懂的字串匹配規則。2 正規表示式的寫法 var re new regexp 規則 可選引數 var re 規則 引數 3 規則中的字元1 普通字元匹配 如 a 匹配字元 a a,b 匹配字元 a,b 2 轉義字元匹配 d 匹配乙個數字,即0 9 d 匹配乙個非數字,...

正規表示式資料驗正

使用方法 例 正整數匹配表示式 var pattern 0 9 1 9 0 9 var flag pattern.test a 如果a是正整數,flag的boolean值為true,如果a不是正整數,flag的boolean值為false。浮點數匹配表示式 var pattern 0 9 0 9 浮...