欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報(bào)邀請碼778899分享:正則表達(dá)式學(xué)習(xí)筆記

柚子快報(bào)邀請碼778899分享:正則表達(dá)式學(xué)習(xí)筆記

http://yzkb.51969.com/

正則表達(dá)式

正則匹配函數(shù)簡單的模式:字符匹配2.1 元字符2.2 概括字符集2.3 數(shù)量詞2.4 邊界匹配 ^和$2.5 組 ( )2.6 匹配模式參數(shù)2.7 re.sub替換字符串2.8 把函數(shù)做為參數(shù)傳遞2.9 group分組

正則表達(dá)式的一些建議

正則匹配函數(shù)

1.1 re.compile re.compile是將正則表達(dá)式轉(zhuǎn)換為模式對象,這樣可以更有效率匹配。 單獨(dú)使用就沒有任何意義,需要和findall(), search(), match()搭配使用。 1.2 re.match 從字符串的第一個(gè)字符開始匹配,未匹配到返回None,匹配到則返回一個(gè)對象 1.3 re.search 搜索整個(gè)字符串第一個(gè)匹配到指定的字符則返回值,未匹配到則返回None。 1.4 re.findall 匹配出字符串中所有跟指定值有關(guān)的值,并且以列表的形式返回。 未匹配到則返回一個(gè)空的列表。

import re

# compile配合findall

a = '0355-67796666'

b = re.compile(r'\d+-\d{8}')

r = re.findall(b,a)

# 或

r = b.findall(a)

print(r)

# 直接使用findall

import re

r = re.findall(r'\d+-\d{8}',a)

print(r)

# compile配合search

import re

正則 = re.compile(r'\d+-\d{8}')

r = re.search(正則,a)

print(r.group())

# compile配合match

import re

正則 = re.compile(r'\d+-\d{8}')

r = re.match(正則,a)

print(r.group())

# ['0355-67796666']

# ['0355-67796666']

# 0355-67796666

# 0355-67796666

簡單的模式:字符匹配

2.1 元字符

[0-9]:所有數(shù)字; [^0-9]:非數(shù)字; x[d-f]z:字符串中間字母是d,e,f的單詞

2.2 概括字符集

\d:所有的數(shù)字;\D:所有非數(shù)字; \w:可以提取中文,英文,數(shù)字和下劃線,不能提取特殊字符 \W:提取特殊字符、空格、\n、\t等

2.3 數(shù)量詞

匹配0次或無限多次—— *號(hào); 匹配1次或者無限多次 ——+號(hào); 匹配0次或1次 ——?號(hào)

# 匹配0次或無限多次 *號(hào),*號(hào)前面的字符出現(xiàn)0次或無限次

import re

a = 'exce0excell3excel3'

r = re.findall('excel*',a)

print(r)

# 匹配1次或者無限多次 +號(hào),+號(hào)前面的字符至少出現(xiàn)1次

import re

a = 'exce0excell3excel3'

r = re.findall('excel+',a)

print(r)

# 匹配0次或1次 ?號(hào),?號(hào)經(jīng)常用來去重復(fù)

import re

a = 'exce0excell3excel3'

r = re.findall('excel?',a)

print(r)

# ['exce', 'excell', 'excel']

# ['excell', 'excel']

# ['exce', 'excel', 'excel']

貪婪

# 貪婪

import re

a = 'Excel 12345Word23456PPT12Lr'

r = re.findall('[a-zA-Z]{3,5}',a)

print(r)

# 非貪婪

r = re.findall('[a-zA-Z]{3,5}?',a)

print(r)

r = re.findall('[a-zA-Z]{3}',a)

print(r)

# ['Excel', 'Word', 'PPT']

# ['Exc', 'Wor', 'PPT']

# ['Exc', 'Wor', 'PPT']

2.4 邊界匹配 ^和$

# 限制電話號(hào)碼的位置必需是8-11位才能提取

import re

tel = '13811115888'

r = re.findall('^\d{8,11}$',tel)

print(r)

# ['13811115888']

2.5 組 ( )

# 將abc打成一個(gè)組,{2}指的是重復(fù)幾次,匹配abcabc

import re

a = 'abcabcabcxyzabcabcxyzabc'

r = re.findall('(abc){2}',a)

print(r)

#['abc', 'abc']

2.6 匹配模式參數(shù)

1).re.I(re.IGNORECASE): 忽略大小寫

2).re.M(MULTILINE): 多行模式,改變’^’和’$’的行為

3).re.S(DOTALL): 點(diǎn)任意匹配模式,改變’.’的行為

4).re.L(LOCALE): 使預(yù)定字符類 \w \W \b \B \s \S 取決于當(dāng)前區(qū)域設(shè)定

5).re.U(UNICODE): 使預(yù)定字符類 \w \W \b \B \s \S \d \D 取決于unicode定義的字符屬性

6).re.X(VERBOSE): 詳細(xì)模式。這個(gè)模式下正則表達(dá)式可以是多行,忽略空白字符,并可以加入注釋

# findall第三參數(shù) re.I忽略大小寫

import re

a = 'abcFBIabcCIAabc'

r = re.findall('fbi',a,re.I)

print(r)

# 多個(gè)模式之間用 | 連接在一起

import re

a = 'abcFBI\nabcCIAabc'

r = re.findall('fbi.{1}',a,re.I | re.S) # 匹配fbi然后匹配任意一個(gè)字符包括\n

print(r)

# 注:.句號(hào),不匹配\n,但是使用re.S之后,匹配所有字符包括換行符

# ['FBI']

# ['FBI\n']

2.7 re.sub替換字符串

# 把FBI替換成BBQ

import re

a = 'abcFBIabcCIAabc'

r = re.sub('FBI','BBQ',a)

print(r)

# 把FBI替換成BBQ,第4參數(shù)寫1,證明只替換第一次,默認(rèn)是0(無限替換)

import re

a = 'abcFBIabcFBIaFBICIAabc'

r = re.sub('FBI','BBQ',a,1)

print(r)

# abcBBQabcCIAabc

# abcBBQabcFBIaFBICIAabc

2.8 把函數(shù)做為參數(shù)傳遞

# 拓展知識(shí)

import re

a = 'abcFBIabcFBIaFBICIAabc'

def 函數(shù)名(形參):

print(形參)

分段獲取 = 形參.group() # group()在正則表達(dá)式中用于獲取分段截獲的字符串,獲取到FBI

return '$' + 分段獲取 + '$'

r = re.sub('FBI',函數(shù)名,a)

print(r)

# 將字符串中大于等于5的替換成9,小于5的替換成0

import re

a = 'C52730A52730D52730'

def 函數(shù)名(形參):

分段獲取 = 形參.group()

if int(分段獲取) >= 5:

return '9'

else:

return '0'

r = re.sub('\d',函數(shù)名,a)

print(r)

#

#

#

# abc$FBI$abc$FBI$a$FBI$CIAabc

# C90900A90900D90900

2.9 group分組

import re

a = "123abc456"

print(re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(0)) #123abc456,返回整體

print(re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(1)) #123

print(re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(2)) #abc

print(re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(3)) #456

import re

a = 'life is short,i use python,i love python'

r = re.search('life(.*)python(.*)python',a)

print(r.group(0)) # 完整正則匹配

print(r.group(1)) # 第1個(gè)分組之間的取值

print(r.group(2)) # 第2個(gè)分組之間的取值

print(r.group(0,1,2)) # 以元組形式返回3個(gè)結(jié)果取值

print(r.groups()) # 返回就是group(1)和group(2)

# 123abc456

# 123

# abc

# 456

# life is short,i use python,i love python

# is short,i use

# ,i love

# ('life is short,i use python,i love python', ' is short,i use ', ',i love ')

# (' is short,i use ', ',i love ')

正則表達(dá)式的一些建議

常用的正則表達(dá)式,不用自己寫,在百度上搜索常用正則表達(dá)式如果內(nèi)置方法可以快速解決問題,建議不要化簡為繁

柚子快報(bào)邀請碼778899分享:正則表達(dá)式學(xué)習(xí)筆記

http://yzkb.51969.com/

參考文章

評論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。

轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://m.gantiao.com.cn/post/18871539.html

發(fā)布評論

您暫未設(shè)置收款碼

請?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問

文章目錄