號碼正確')
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』匹配,把所有滿足條件的結果放在列表裡面。
(ret)
ret1 = re.findall('
[a-z]+
','eva agon yuan
') #
['eva', 'agon', 'yuan']
(ret1)
ret2 = re.findall('
[a-z]*
','eva agon yuan
') #
['eva', '', 'agon', '', 'yuan', '']#待匹配的字串裡面的空白符跟[a-z]*匹配了0次。所以結果有空白字串。空白符可以跟*號和?號匹配0次。
(ret2)
import redef 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:
importre 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語句,就會報錯。所以上面程式是常用格式。
(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次。如果不輸入重複次數,預設匹配任意多次。
(ret)
5.subn:
import
re ret = re.subn('
\d','
@','
4ew 5her hsdfgh5 shsr56hserh
') #
('@ew @her hsdfgh@ shsr@@hserh', 5) ,數字替換成@,返回元組,元組第乙個元素是替換的結果,第二個元素是替換的次數。
(ret)
6.complie:把正側編譯成物件,適用於這個正側重複使用,並且待匹配的字串特別長的情況。
import
re obj = re.compile('
\d+'
) ret = obj.findall('
ad54646ae4g awe646gaa4eg 6a4g
') #
['54646', '4', '646', '4', '6', '4']
(ret)
7.split: 分割結果是列表。
import
re ret = re.split('
[ab]
','fgiaklbjklae ajbag
')#['fgi', 'kl', 'jkl', 'e ', 'j', '', 'g']
(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'],沒有保留分割的字元。
(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 浮...