日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python核心编程第三版(一)学习笔记:正则表达式

發(fā)布時(shí)間:2023/12/20 python 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python核心编程第三版(一)学习笔记:正则表达式 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

注:下面有些內(nèi)容不全都來源于原著,這些都是通過各方面的資料收集合并的結(jié)果。

目錄

一、正則表達(dá)式介紹

二、分類解析

1、元字符

匹配對(duì)象以及group()和groups()方法

搜索與匹配的比較

2、數(shù)量詞:會(huì)出現(xiàn)貪婪模式

3、邊界詞

4、分組詞

5、特殊構(gòu)造

三、re模塊下的函數(shù)

1、compile:

2、search:

3、match:

4、split:

5、findall:

6、sub:

7、escape:

四、re模塊下函數(shù)的方法


一、正則表達(dá)式介紹

正則表達(dá)式為高級(jí)的文本模式匹配、抽取、與/或文本形式的搜索和替換功能提供了基礎(chǔ)。

這里主要講針對(duì)于python編程中的正則表達(dá)式內(nèi)容,也就是講解re模塊的應(yīng)用,因?yàn)閜ython是通過標(biāo)準(zhǔn)庫中的re模塊來支持正則表達(dá)式的。

常見正則表達(dá)式符號(hào)和特殊字符(后面會(huì)針對(duì)這些做一些練習(xí)題)

符號(hào)

描述

示例

Literal

匹配文本字符串的字面值literal

Foo

re1| re2

匹配正則表達(dá)式re1或者re2

foo|bal

.(點(diǎn))

匹配任何字符(除了\n之外)

b.b

^

匹配字符串的起始部分

^Dear

$

匹配字符串的終止部分

/bin/*sh$

*

匹配0次或多次前面出現(xiàn)的正則表達(dá)式

[A-Za-z0-9]*

+

匹配1次或多次前面出現(xiàn)的正則表達(dá)式

[a-z]+\.com

?

匹配0次或1次前面出現(xiàn)的正則表達(dá)式

goo?

{N}

匹配N次前面出現(xiàn)的正則表達(dá)式

[0-9]{3}

{M,N}

匹配M~N次前面出現(xiàn)的正則表達(dá)式

[0-9]{3,5}

[...]

匹配來自字符集的任意單一字符

[aeiou]

[..x-y..]

匹配x~y范圍中的任意單一字符

[0-9],[a-z]

[^...]

不匹配此字符集中出現(xiàn)的任何一個(gè)字符,包括某一范圍內(nèi)的字符(不包括此字符集中出現(xiàn))

[^aeiou]

(*|+|?|{})?

用于匹配上面頻繁出現(xiàn)/重復(fù)出現(xiàn)符號(hào)的非貪婪版本(*、+、?、{})

.*?[a-z]

(...)

匹配封閉的正則表達(dá)式然后另存為子組

([0-9]{3})?,f(oo|u)bar

特殊字符

?

?

\d

匹配任何十進(jìn)制數(shù)字,與[0-9]一致(\D與\d相反,不匹配任何非數(shù)值型的數(shù)字)

data\d+.txt

\w

匹配任何字母數(shù)字字符,與[A-Za-z0-9]相同(\W與之相反)

[A-Za-z]\w+

\s

匹配任何空格字符,與[\n\t\r\v\f]相同(\S與之相反)

of\sthe

\b

匹配任何單詞邊界(\B與之相反)

\bThe\b

\N

匹配已保存的子組N(參見上面的(...))

price:\14

\c

逐字匹配任何特殊字符c(即,僅按字面意思匹配,不匹配特殊含義)

\.,\\,\*

\A(\Z)

匹配字符串的起始(結(jié)束)(另見上面的^和$)

\ADear

擴(kuò)展表示法

?

?

(?iLmsux)

在正則表達(dá)式中嵌入一個(gè)或者多個(gè)特殊“標(biāo)記“參數(shù)(或者通過函數(shù)/方法)

(?x),(? Im)

(?...)

表示一個(gè)匹配不用保存的分組

(?:\w+\.)*

(?p<name>...)

像一個(gè)僅由name標(biāo)識(shí)而不是數(shù)字ID標(biāo)識(shí)的正則分組匹配

(?p<data>)

(?P=name)

在同一字符串中匹配由(?p<name)分組的之前文本

(?p=data)

(?#...)

表示注釋,所有內(nèi)容都被忽略

(?#comment)

(?=...)

匹配條件是如果...出現(xiàn)在之后的位置,而不適用輸入字符串;稱作正向前視斷言

(?=.com)

(?!...)

匹配條件是如果...不出現(xiàn)之后的位置,而不使用輸入字符串;稱作負(fù)向前視斷言

(?!.net)

(?<=...)

匹配條件是如果...出現(xiàn)在之前的位置;而不使用輸入字符串;稱作正向后視斷言

(?<=800-)

(?<!...)

匹配條件是如果...不出現(xiàn)在之前的位置,而不使用輸入字符串;稱作負(fù)向后視斷言

(?<!192\.168\.)

(?(id/name)Y|N)

如果分組所提供的id或name存在,就返回正則表達(dá)式的條件匹配Y,如果不存在就返回N;|N是可選項(xiàng)

(?(1)y|x)

二、分類解析

1、元字符

字符

???????? 描述

.

除換行符外的任意字符

\ 

轉(zhuǎn)義字符

[...]

字符集合

\d 

數(shù)字:[0-9]

\D 

非數(shù)字[^0-9]

\s

空白字符[\t\r\n\f、空格]

\S

非空白字符[^\s]

\w

單詞字符[A-Za-z0-9]

\W

非單詞字符[^\w]

# "."通配符 >>> import re >>> pat = re.compile(".") >>> pat.match('abc') <_sre.SRE_Match object; span=(0, 1), match='a'> >>> pat.match("abc").group() 'a' #匹配到了首個(gè)字符 >>> pat.match("abc").groups() () >>> pat.search("abc").group() 'a' >>> pat.search("abc").groups() () >>> pat.match("\n").group() Traceback (most recent call last): #換行符匹配出錯(cuò)File "<pyshell#8>", line 1, in <module>pat.match("\n").group() AttributeError: 'NoneType' object has no attribute 'group' >>>

匹配對(duì)象以及group()和groups()方法

當(dāng)處理正則表達(dá)式時(shí)。除了正則表達(dá)式對(duì)象之外,還有另一個(gè)對(duì)象類型:匹配對(duì)象(成功調(diào)用match或search返回的對(duì)象)。匹配對(duì)象有兩個(gè)重要的方法:group()和groups()。

group()要么返回整個(gè)匹配對(duì)象,要么根據(jù)要求返回特定子組。

groups()則僅返回一個(gè)包含唯一或者全部子組的元組。

如果沒有子組的要求,group()仍然返回整個(gè)匹配對(duì)象,groups()返回一個(gè)空元組。

不明白的轉(zhuǎn): group 與 groups的區(qū)別

# "\"轉(zhuǎn)義符 >>> import re >>> pat = re.compile("\.") >>> pat.search("ac.efg").group() '.' #匹配到. >>> pat.findall("ac.efg") ['.'] #不用group,返回列表 >>>

關(guān)于re模塊在創(chuàng)建模式對(duì)象(compile)后的常用函數(shù)會(huì)在后面詳細(xì)講解

# "[...]" : 集合,匹配里面的任意一個(gè)元素 >>> import re >>> pat = re.compile("[abc]") >>> pat.match("axbycz").group() 'a' >>> pat.search("axbycz").group() 'a' >>> pat.findall("axbycz") ['a', 'b', 'c'] >>> # "\d" : 數(shù)字 >>> import re >>> pat = re.compile("\d") >>> pat.search("ax1by2cz3").group() '1' #搜索到第一個(gè)數(shù)字:1,返回 >>> pat.match("ax1by2cz3").group() Traceback (most recent call last): #匹配不到(首個(gè)不是數(shù)字)返回None,報(bào)錯(cuò),match匹配字符串頭File "<pyshell#4>", line 1, in <module>pat.match("ax1by2cz3").group() AttributeError: 'NoneType' object has no attribute 'group' >>> >>> pat.findall("ax1by2cz3") #匹配所有的數(shù)字,列表返回 ['1', '2', '3']

搜索與匹配的比較

python主要有兩種方法完成模式匹配:搜索、匹配

搜索,search()實(shí)現(xiàn)在字符串任意部分中搜索匹配的模式

匹配,match()實(shí)現(xiàn)判斷一個(gè)字符串能否從起始處全部或者部分地匹配某個(gè)模式

# "\D" : 非數(shù)字 >>> import re >>> pat = re.compile("\D") >>> pat.match("ax1by2cz3").group() 'a' >>> pat.search("ax1by2cz3").group() 'a' >>> pat.findall("ax1by2cz3") ['a', 'x', 'b', 'y', 'c', 'z'] # "\s" :空白字符有4,包括: \t、\r、\n、空格 >>> import re >>> pat = re.compile("\s") >>> pat.findall("\rax1 \nby2 \tcz3") ['\r', ' ', '\n', ' ', '\t'] >>> pat.search("\rax1 \nby2 \tcz3").group() '\r' >>> pat.match("\rax1 \nby2 \tcz3").group() '\r' # "\S" :非空白字符 >>> import re >>> pat = re.compile("\S") >>> pat.search("\rax1 \nby2 \tcz3").group() 'a' >>> pat.findall("\rax1 \nby2 \tcz3") ['a', 'x', '1', 'b', 'y', '2', 'c', 'z', '3'] # "\w" :單詞字符,數(shù)字和字母:[A-Za-z0-9] >>> import re >>> pat = re.compile("\w") >>> pat.findall("1a2b3c") ['1', 'a', '2', 'b', '3', 'c'] >>> pat.search("1a2b3c").group() '1' >>> pat.match("1a2b3c").group() '1' # "\W":非單詞字符,除數(shù)字和字母外 >>> import re >>> pat = re.compile("\W") >>> pat.findall("1a2我b3c") [] >>> pat.findall("1a2我b3c,4essa.") [',', '.'] >>> pat.search("1a2我b3c,4essa.").group() ','

2、數(shù)量詞:會(huì)出現(xiàn)貪婪模式

數(shù)量詞

????????????? 描述

*

匹配前一個(gè)字符0次或則多次

+

匹配前一個(gè)字符1次或則多次

匹配前一個(gè)字符0次或則1

{m}

匹配前一個(gè)字符m

{m,n}

匹配前一個(gè)字符m次到n

數(shù)量詞?

非貪婪模式

# "*" :0次或則多次 >>> import re >>> pat = re.compile("[abc]*") >>> pat.match("abcabcdefabc").group() 'abcabc' #2次 >>> pat.search("abcabcdefabc").group() 'abcabc' #2次 >>> pat.findall("abcabcdefabc") ['abcabc', '', '', '', 'abc', ''] #2次和1次,因?yàn)橛?次,所以匹配了'' # "+" :1次或則多次 >>> import re >>> pat = re.compile("[abc]+") >>> pat.match("abcdefabcabc").group() 'abc' >>> pat.search("abcdefabcabc").group() 'abc' >>> pat.findall("abcdefabcabc") ['abc', 'abcabc'] # "?" :0次或則1次,match,search 不會(huì)出現(xiàn)none,會(huì)出現(xiàn)'' >>> import re >>> pat = re.compile("[abc]?") >>> pat.match("defabc").group() '' #0次 >>> pat.match('abcdefabc').group() 'a' >>> pat.search('defabc').group() '' #0次 >>> pat.findall('defabc') ['', '', '', 'a', 'b', 'c', ''] #0次和1次 # "{m}" :匹配字符串出現(xiàn)m次 >>> import re >>> pat = re.compile("[op]{2}") #o或則p出現(xiàn)2次 >>> pat.search("abcooapp").group() 'oo' #匹配第一次出現(xiàn)的字符串,o比p先出現(xiàn) >>> pat.findall("abcooapp") ['oo', 'pp'] #匹配出現(xiàn)的所有字符串,列表形式返回 # "{m,n}" :匹配字符串出現(xiàn)m到n次 >>> import re >>> pat = re.compile("[op]{2,4}") #o或則p出現(xiàn)2到4次 >>> pat.match("pppabcooapp").group() 'ppp' #匹配開頭 >>> pat.match("ppabcooapp").group() 'pp' #不連續(xù),非貪婪模式只匹配2次 >>> pat.search("pppabcooapp").group() 'ppp' #匹配第一次出現(xiàn) >>> pat.findall("pppabcooapp") ['ppp', 'oo', 'pp'] #匹配所有 # "數(shù)量詞?" :非貪婪模式:只匹配最少的(盡可能少);默認(rèn)貪婪模式:匹配最多的(盡可能多) >>> import re >>> pat = re.compile("[abc]+") #貪婪模式 >>> pat.match("abcdefabcabc").group() #匹配盡可能多的:abc 'abc' >>> pat.match("bbabcdefabcabc").group() 'bbabc' >>> pat.search("dbbabcdefabcabc").group() 'bbabc' >>> pat.findall("abcdefabcabc") ['abc', 'abcabc'] >>> >>> pat = re.compile("[abc]+?") #非貪婪模式:+? >>> pat.match("abcdefabcabc").group() #匹配盡可能少的:a、b、c 'a' >>> pat.search('dbbabcdefabcabc').group() 'b' >>> pat.findall('abcdefabcabc') ['a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c']

3、邊界詞

邊界詞

????????? 描述?????

^

匹配字符串開頭和行首

$

匹配字符串結(jié)尾和行尾

\A

匹配字符串開頭

\Z

匹配字符串結(jié)尾

\b

匹配\w \W 之間

# "^" :匹配字符串開頭或則行頭 >>> import re >>> pat = re.compile("^[abc]") #開頭是abc >>> pat.search('defabc').group() Traceback (most recent call last): #找不到File "<pyshell#2>", line 1, in <module>pat.search('defabc').group() AttributeError: 'NoneType' object has no attribute 'group' >>> pat.match('defabc').group() Traceback (most recent call last): #找不到File "<pyshell#3>", line 1, in <module>pat.match('defabc').group() AttributeError: 'NoneType' object has no attribute 'group' >>> pat.findall('defabc') [] >>> pat.search('adefabc').group() 'a' #開頭是a、b、c中的任意一個(gè) >>> pat.match('adefabc').group() 'a' >>> pat.findall('adefabc') ['a'] >>> import re >>> pat = re.compile("^[abc]+") #開頭是a、b、c中的任意一個(gè)的一次或則多次,貪婪:匹配多個(gè) >>> pat.findall("cbadefab") ['cba'] >>> pat = re.compile(r'^[abc]+?') #開頭是a、b、c中的任意一個(gè)的一次或則多次,非貪婪:匹配一個(gè) >>> pat.findall('cbadefab') ['c']

compile中的r表示其后的字符串按原樣表示,不使用轉(zhuǎn)義字符,如:
"\n" 表示換行符
r"\n" 表示一個(gè)斜杠加上字符n組成的字符串

# "$" :匹配字符串結(jié)尾或則行尾 >>> import re >>> pat = re.compile("[abc]$") >>> pat.match("adefAbc").group() Traceback (most recent call last): #match匹配的是字符串開頭,所以查找$的時(shí)總是返回NoneFile "<pyshell#2>", line 1, in <module>pat.match("adefAbc").group() AttributeError: 'NoneType' object has no attribute 'group' >>> pat.search('adefAbc').group() 'c' >>> pat.findall('adefAbc') ['c'] >>> >>> pat = re.compile('[abc]+$') >>> pat.search('adefAbc').group() #結(jié)尾是a、b、c中的任意一個(gè)的一次或則多次,貪婪:匹配多個(gè) 'bc' >>> pat.findall('adefAbc') ['bc'] >>> # "\A":匹配字符串開頭 >>> import re >>> pat = re.compile("\A[abc]+") >>> pat.findall('cbadefab') ['cba'] >>> pat.search('cbadefab').group() 'cba' >>> # "\Z":匹配字符串結(jié)尾 >>> import re >>> pat = re.compile('[abc]+\Z') >>> pat.search('cbadefab').group() 'ab' >>> pat.findall('cbadefab') ['ab'] >>> #"\b":匹配\w 和 \W 之間 >>> import re >>> s = "==123!! abc123. 123. 123abc. 123" >>> re.split(r"123\b",s) #123前后都有邊界 ['==', '!! abc', '. ', '. 123abc. ', '']

\b此處不明白請(qǐng)轉(zhuǎn):正則表達(dá)式里\b和\B,Python實(shí)例

4、分組詞

分組方法

描述

|

左右表達(dá)式任意匹配一個(gè),先匹配左邊一旦成功則跳過匹配右邊,
如果|沒有包含在(),匹配整個(gè)正則表達(dá)式

? (...)

分組匹配,從左到右,每遇到一個(gè) ( 編號(hào)+1,分組后面可加數(shù)量詞

(?P<name>...)

除了分組序號(hào)外,指定一個(gè) name的別名

\<number>

引用編號(hào)為<number>的分組匹配到的字符串

(?P=name)

引用別名為<name>的分組匹配到的串

# "(...)" :在模式里面用()來表示分組(匿名分組),適用于提取目標(biāo)字符串中的某一些部位。 >>> import re >>> pat = re.compile(r"(a)\w(c)") #\w:單詞字符[A-Za-z0-9] >>> pat.match("abdddcccef").group() Traceback (most recent call last): #一個(gè)\w只能匹配一次File "<pyshell#2>", line 1, in <module>pat.match("abdddcccef").group() AttributeError: 'NoneType' object has no attribute 'group' >>> pat.match("adcccef").group() 'adc' >>> pat = re.compile("(a)b(c)") #分2組,匿名分組 >>> pat.match("abcdef").group() 'abc' #默認(rèn)返回匹配的字符串 >>> pat.match("adcdef").group() Traceback (most recent call last): #不匹配File "<pyshell#6>", line 1, in <module>pat.match("adcdef").group() AttributeError: 'NoneType' object has no attribute 'group' >>> pat.match('abcdef').group(1) #取分組1,適用于search 'a' >>> pat.match('abcdef').group(2) #取分組2,適用于search 'c' >>> pat.match('abcdef').groups() #取所有分組,元組形式返回 ('a', 'c') >>> pat=re.compile(r'www\.(.*)\..{3}') >>> pat.match('www.dxy.com').group(1) 'dxy' >>> pat.match('www.dxy.com').groups() ('dxy',) # "(?P<name>...)" 在模式里面用()來表示分組(命名分組),適用于提取目標(biāo)字符串中的某一些部位。 >>> import re >>> pat = re.compile(r"(?P<K>a)\w(c)") #分2組:命名分組+匿名分組 >>> pat.search('abcdef').groups() #取所有分組,元組形式返回 ('a', 'c') >>> pat.search('abcdef').group(1) #取分組1,適用于search 'a' >>> pat.search('abcdef').group(2) #取分組2,適用于search 'c' >>> pat.search('abcdef').group() #默認(rèn)返回匹配的字符串 'abc' >>> pat.search('abcdef').groupdict() #命名分組可以返回一個(gè)字典【專有】,匿名分組則沒有 {'K': 'a'} >>> pat.search('abcdef').groupdict(2) {'K': 'a'} >>> pat.search('abcdef').groupdict(1) {'K': 'a'} # "(?P=name)" :引用命名分組(別名)匹配: >>> import re >>> pat=re.compile(r'(?P<K>a)\w(c)(?P=K)') #(?P=K)引用分組1的值,就是a >>> pat.search('abcdef').group() Traceback (most recent call last): #匹配不到,因?yàn)橥暾?#39;a\wca',模式的第4位是aFile "<pyshell#3>", line 1, in <module>pat.search('abcdef').group() AttributeError: 'NoneType' object has no attribute 'group' >>> pat.search('abcadef').group() #匹配到,模式的第4位和組1一樣,值是a 'abca' >>> pat.search('abcadef').groups() ('a', 'c') >>> pat.search('abcadef').group(1) 'a' >>> pat.search('abcadef').group(2) 'c' # "\<number>" :引用分組編號(hào)匹配 >>> import re >>> pat=re.compile(r'(?P<K>a)\w(c)(?P=K)\2') #\2引用分組2的值,就是c >>> pat.findall('Aabcadef') #匹配不到,因?yàn)橥暾?#39;a\wcac',模式的第5位是c [] >>> pat.findall('Aabcacdef') #匹配到,模式的第5位和組2一樣,值是c [('a', 'c')] >>> pat.search('Aabcacdef').groups() ('a', 'c') >>> pat.search('Aabcacdef').group() 'abcac' >>> pat.search('Aabcacdef').group(1) 'a' >>> pat.search('Aabcacdef').group(2) 'c'

5、特殊構(gòu)造

方法

描述

(?:...)

(...)不分組版本,用于使用 | 或者后接數(shù)量詞

(?iLmsux)

iLmsux的每個(gè)字符代表一個(gè)匹配模式,只能用在正則表達(dá)式的開頭,可選多個(gè)

(?#...)

#號(hào)后的內(nèi)容將作為注釋

(?=...)

之后的字符串內(nèi)容需要匹配表達(dá)式才能成功匹配

(?!...)

之后的字符串不匹配表達(dá)式才能成功

(?<=...)

之前的字符串需要匹配表達(dá)式才能成功

(?<!...)

之前的字符串需要不匹配表達(dá)式才能成功

(?(id/name) yes |no)

如果編號(hào)為id/名字為name的組匹配到字符串,則需要匹配yes,否則匹配no,no可以省略

?

?

?

?

?

?

?

?

?

?

# "(?:...)" :()里面有?:表示該()不是分組 >>> import re >>> pat = re.compile(r"a(?:bc)") >>> pat.findall('abc') ['abc'] >>> pat.match('abc').groups() #顯示不出分組 () # "(?=...)":匹配...表達(dá)式,返回。對(duì)后進(jìn)行匹配,總是對(duì)后面進(jìn)行匹配 >>> import re >>> pat=re.compile(r'\w(?=\d)') #匹配表達(dá)式\d,返回?cái)?shù)字的前一位,\w:單詞字符[A-Za-z0-9] >>> pat.findall('abc1 def1 xyz1') ['c', 'f', 'z'] >>> pat.findall('zhoujy20130628hangzhou') #匹配數(shù)字的前一位,列表返回 ['y', '2', '0', '1', '3', '0', '6', '2'] >>> >>> pat=re.compile(r'\w+(?=\d)') >>> pat.findall('abc1,def1,xyz1') #匹配最末數(shù)字的前字符串,列表返回 ['abc', 'def', 'xyz'] >>> pat.findall('abc21,def31,xyz41') ['abc2', 'def3', 'xyz4'] >>> pat.findall('zhoujy20130628hangzhou') ['zhoujy2013062'] >>> import re >>> pat=re.compile(r'[A-Za-z]+(?=\d)') #[A-Za-z],匹配字母,可以用其他的正則方法 >>> pat.findall('zhoujy20130628hangzhou123') #匹配后面帶有數(shù)字的字符串,列表返回 ['zhoujy', 'hangzhou'] >>> pat.findall('abc21,def31,xyz41') ['abc', 'def', 'xyz'] >>> # "(?!...)" 不匹配...表達(dá)式,返回。對(duì)后進(jìn)行匹配 >>> import re >>> pat=re.compile(r'[A-Za-z]+(?!\d)') #[A-Za-z],匹配字母,可以用其他的正則方法 >>> pat.findall('zhoujy20130628hangzhou123,12,binjiang310') ['zhouj', 'hangzho', 'binjian'] #匹配后面不是數(shù)字的字符串,列表返回 >>> pat.findall('abc21,def31,xyz41') ['ab', 'de', 'xy'] >>> # "(?<=...)":匹配...表達(dá)式,返回。對(duì)前進(jìn)行匹配,總是對(duì)前面進(jìn)行匹配 >>> import re >>> pat=re.compile(r'(?<=\d)[A-Za-z]+') #匹配前面是數(shù)字的字母 >>> pat.findall('abc21,def31,xyz41') [] >>> pat.findall('1abc21,2def31,3xyz41') ['abc', 'def', 'xyz'] >>> pat.findall('zhoujy20130628hangzhou123,12,binjiang310') ['hangzhou'] >>> # "(?<!...)":不匹配...表達(dá)式,返回。對(duì)前進(jìn)行匹配,總是對(duì)前面進(jìn)行匹配 >>> import re >>> pat=re.compile(r'(?<!\d)[A-Za-z]+') #匹配前面不是數(shù)字的字母 >>> pat.findall('abc21,def31,xyz41') ['abc', 'def', 'xyz'] >>> pat.findall('zhoujy20130628hangzhou123,12,binjiang310') ['zhoujy', 'angzhou', 'binjiang'] >>> #"(?(id\name) yes |no)": 組是否匹配,匹配返回 >>> import re #no省略了,完整的是a\dbc\d ==> a2bc3,總共5位,第2位是可有可無的數(shù)字,第5位是數(shù)字 >>> pat=re.compile(r'a(\d)?bc(?(1)\d)') >>> pat.findall('abc9') [''] #返回組1,但第2位(組1)沒有,即返回了'' >>> pat.findall('a8bc9') #完整的模式,返回組1 ['8'] >>> pat.match('a8bc9').group() 'a8bc9' >>> pat.match('a8bc9').group(1) '8' >>> pat.findall('a8bc') [] >>> #"(?iLmsux)":這里就介紹下i參數(shù):大小寫區(qū)分匹配 >>> import re >>> pat=re.compile(r'abc') >>> pat.findall('abc') ['abc'] >>> pat.findall('ABC') [] >>> pat=re.compile(r'(?i)abc') #(?i) 不區(qū)分大小寫 >>> pat.findall('ABC') ['ABC'] >>> pat.findall('abc') ['abc'] >>> pat.findall('aBc') ['aBc'] >>> pat.findall('aBC') ['aBC'] >>> >>> pat=re.compile(r'abc',re.I) #re.I 作為參數(shù)使用,同上作用,推薦 >>> pat.findall('aBC') ['aBC'] >>> pat.findall('abc') ['abc'] >>> pat.findall('ABC') ['ABC']

三、re模塊下的函數(shù)

?????????? 函數(shù)  

??????????? 描述

compile(pattern)

創(chuàng)建模式對(duì)象

search(pattern,string)

在字符串中尋找模式

match(pattern,string)  

在字符串開始處匹配模式

split(pattern,string)

根據(jù)模式分割字符串

findall(pattern,string)

列表形式返回匹配項(xiàng)

sub(pat,repl,string)

pat匹配想用repl替換

escape(string)

特殊字符轉(zhuǎn)義

1、compile:

>>> import re >>> pat = re.compile("A") >>> m = pat.search("CBA") >>> print(m) #匹配到了,返回MatchObject(匹配對(duì)象)(True) <_sre.SRE_Match object; span=(2, 3), match='A'> >>> m = pat.search("CBD") >>> print(m) #沒有匹配到,返回None(False) None >>> #上面的等價(jià)于,但推薦都用第一種方法,因?yàn)閷⒄齽t表達(dá)式轉(zhuǎn)換為模式對(duì)象,實(shí)現(xiàn)更有效率的匹配,其他的函數(shù)會(huì)在內(nèi)部進(jìn)行轉(zhuǎn)換。 >>> re.search("A","CBA") <_sre.SRE_Match object; span=(2, 3), match='A'> >>>

2、search:

>>> import re >>> m = re.search('asd','ASDasd') >>> print(m) <_sre.SRE_Match object; span=(3, 6), match='asd'> #匹配到了,返回MatchObject(True) >>> m = re.search('asd','ASDASD') >>> print(m) #沒有匹配到,返回None(False) None >>>

3、match:

>>> import re >>> m = re.match('a','Aasd') >>> print(m) None >>> m = re.match('a','aASD') >>> print(m) <_sre.SRE_Match object; span=(0, 1), match='a'>

4、split:

>>> import re >>> re.split(",","a,s,d,asd") ['a', 's', 'd', 'asd'] #返回列表 #等價(jià)于上 >>> pat = re.compile(',') >>> pat.split('a,s,d,asd') ['a', 's', 'd', 'asd'] >>> >>> re.split("[, ]+","a , s ,d ,,,,,asd") #正則匹配:[, ]+ ['a', 's', 'd', 'asd'] >>> re.split("[, ]+","a , s ,d ,,,,,asd",maxsplit=2) # maxsplit 最多分割次數(shù) ['a', 's', 'd ,,,,,asd'] >>> #說明:根據(jù)模式的匹配項(xiàng)來分割字符串,類似字符串的split 的方法,但是字符串的split只能用固定長(zhǎng)度的分割符,而re.split允許用任意長(zhǎng)度和個(gè)數(shù)的分割符。

5、findall:

>>> import re >>> re.findall("a","ASDaDFGAa") ['a', 'a'] #列表形式返回匹配到的字符串 >>> pat = re.compile('a') >>> pat.findall('ASDaDFGAa') ['a', 'a'] >>> pat = re.compile('[A-Z]+') >>> pat.findall('ASDcDFGAa') ['ASD', 'DFGA']#說明:列表形式返回給定模式的匹配項(xiàng)。返回所有匹配的字符串。

6、sub:

#通過組進(jìn)行更新替換: >>> import re >>> re.sub("a","A","abcasd") 'AbcAsd' >>> pat = re.compile("a") >>> pat.sub("A","abcasd") 'AbcAsd' >>> >>> pat=re.compile(r'www\.(.*)\..{3}') >>> pat.match('www.dxy.com').group(1) 'dxy' #通過正則匹配找到符合規(guī)則的”www.dxy.com“ ,取得組1字符串 去替換 整個(gè)匹配得到字符串。dxy -> www.dxy.com >>> pat.sub(r'\1','hello,www.dxy.com') 'hello,dxy' >>> pat=re.compile(r'(\w+) (\w+)') >>> s='hello world ! hello hz !' >>> pat.findall('hello world ! hello hz !') [('hello', 'world'), ('hello', 'hz')] #通過正則得到組1(hello),組2(world),再通過sub去替換。即組1替換組2,組2替換組1,調(diào)換位置。 >>> pat.sub(r'\2 \1',s) 'world hello ! hz hello !'#說明:使用給定的內(nèi)容替換掉找到的字符串。a->A

7、escape:

#轉(zhuǎn)義 >>> import re >>> re.escape("www.dxy.cn") 'www\\.dxy\\.cn'#說明:對(duì)字符串里面的特殊字符串進(jìn)行轉(zhuǎn)義。

四、re模塊下函數(shù)的方法

>>> import re >>> pat = re.compile('a') >>> dir(pat) ['__class__', '__copy__', '__deepcopy__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'findall', 'finditer', 'flags', 'fullmatch', 'groupindex', 'groups', 'match', 'pattern', 'scanner', 'search', 'split', 'sub', 'subn'] >>>

?

?方法

????????????? 描述

group

獲取子模式()的匹配項(xiàng)

start

給定組匹配項(xiàng)的開始位置

end

給定組匹配項(xiàng)的結(jié)束位置

span

給定組匹配項(xiàng)的開始結(jié)束位置

>>> import re >>> pat = re.compile(r'www\.(.*)\.(.*)') #用()表示一個(gè)組,2個(gè)組 >>> m = pat.match('www.dxy.com') >>> m.group() #默認(rèn)為0,表示匹配整個(gè)字符串 'www.dxy.com' >>> m.group(1) #返回給定組1匹配的子字符串 'dxy' >>> m.group(2) 'com' >>> m.start(2) #組2開始的索引 8 >>> m.end(2) #組2結(jié)束的索引 11 >>> m.span(2) #組2開始、結(jié)束的索引 (8, 11) >>>

五、正則表達(dá)式應(yīng)用場(chǎng)景練習(xí)

1、匹配一行文字中的所有開頭的字母內(nèi)容

>>> import re >>> s = "i love you not because of who you are, but because of who i am when i am with you" >>> pat = re.compile(r"\b\w") >>> pat.findall(s) ['i', 'l', 'y', 'n', 'b', 'o', 'w', 'y', 'a', 'b', 'b', 'o', 'w', 'i', 'a', 'w', 'i', 'a', 'w', 'y']

2、匹配一行文字中的所有開頭的數(shù)字內(nèi)容

>>> import re >>> s = "i love you not because 12sd 34er 56df e4 54434" >>> pat = re.compile(r"\b\d") >>> pat.findall(s) ['1', '3', '5', '5']

3、提取每行中完整的年月日和時(shí)間字段

>>> import re >>> s = """se234 1987-02-09 07:30:001987-02-10 07:25:00""" >>> pat = re.compile(r"\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}") >>> pat.findall(s) ['1987-02-09 07:30:00', '1987-02-10 07:25:00'] >>> #re.M表示將字符串視為多行,從而^匹配每一行的行首,$匹配每一行的行尾 >>> re.findall(r"\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}",s,re.M) ['1987-02-09 07:30:00', '1987-02-10 07:25:00']

4、將每行中的電子郵件地址替換為你自己的電子郵件地址

>>> import re >>> s = """693152032@qq.com, werksdf@163.com, sdf@sina.comsfjsdf@139.com, soifsdfj@134.compwoeir423@123.com""" >>> pat = re.compile(r"\w+@\w+.com") >>> pat.findall(s) ['693152032@qq.com', 'werksdf@163.com', 'sdf@sina.com', 'sfjsdf@139.com', 'soifsdfj@134.com', 'pwoeir423@123.com'] >>> >>> pat.sub("我愛你嘉大@163.com",s) '我愛你嘉大@163.com, 我愛你嘉大@163.com, 我愛你嘉大@163.com\n\n 我愛你嘉大@163.com, 我愛你嘉大@163.com\n\n 我愛你嘉大@163.com'

5、使用正則提取出字符串中的單詞

>>> import re >>> s="""i love you not because of who 234 you are, 234 but 3234ser because of who i am when i am with you""" >>> pat = re.compile(r"\b[A-Za-z]+\b") >>> pat.findall(s) ['i', 'love', 'you', 'not', 'because', 'of', 'who', 'you', 'are', 'but', 'because', 'of', 'who', 'i', 'am', 'when', 'i', 'am', 'with', 'you'] >>> words = pat.findall(s) >>> words = set(words) #將列表轉(zhuǎn)換為集合,去重復(fù) >>> print(words) {'with', 'when', 'because', 'i', 'am', 'are', 'you', 'not', 'who', 'but', 'love', 'of'} >>> len(words) 12

6、匹配一段文本中所有的身份證數(shù)字

>>> import re >>> s = """sfafsf,34234234234,1231313132,154785625475896587,sdefgr54184785ds85,4864465asf86845,15478562547589658X,15478562547589658x""" >>> pat = re.compile(r"\d{17,18}[X,x]?") >>> pat.findall(s) ['154785625475896587,', '15478562547589658X', '15478562547589658x'] >>>

7、匹配一個(gè)浮點(diǎn)數(shù)

>>> import re >>> s = "-1,-2.5,8.8,1,0" >>> pat = re.compile(r"[+|-]?\d+\.\d*") >>> pat.findall(s) ['-2.5', '8.8']

8、匹配漢字

>>> import re >>> s = "skda我愛嘉大。" >>> pat = re.compile(r"[\u4e00-\u9fa5]{0,}") #Unicode表中的漢字的頭和尾。 >>> pat.findall(s) ['', '', '', '', '我愛嘉大', '', ''] >>> for i in hanzi: #清除空字符串if i == '':hanzi.remove(i)else:continue >>> hanzi ['我愛嘉大']>>> import re >>> s = "skda我愛嘉大。" >>> pat = re.compile(r"[\u4e00-\u9fa5]{1,}") >>> pat.findall(s) ['我愛嘉大']

9、?匹配網(wǎng)址

>>> import re >>> s = """http://www.interoem.com/messageinfo.asp?id=35 http://3995503.com/class/class09/news_show.asp?id=14 http://lib.wzmc.edu.cn/news/onews.asp?id=769 http://www.zy-ls.com/alfx.asp?newsid=377&id=6 http://www.fincm.com/newslist.asp?id=415""" >>> s = s.splitlines() >>> pat = re.compile(r"http://.*(com/|cn/)") >>> for i in s:print(pat.match(i).group())http://www.interoem.com/ http://3995503.com/ http://lib.wzmc.edu.cn/ http://www.zy-ls.com/ http://www.fincm.com/ >>>

10、匹配合法的IP地址

>>> import re >>> s = "10.16.20.3" #這里可以改為用戶輸入的IP地址 >>> pat = re.compile("^(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|[1-9])\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)$") >>> pat.match(s).group() '10.16.20.3' >>>

11、?取出屬性data-original對(duì)應(yīng)的url

>>> import re >>> s = """<img data-original="https://rpic.douyucdn.cn/z1609/07/15/478748_160907150833.jpg" src="https://rpic.douyucdn.cn/z1609/07/15/478748_160907150833.jpg" style="display: block;">""" >>> pat = re.compile(r"<img data-original="(.*?)"") #雙引號(hào)單引號(hào)交叉使用 SyntaxError: invalid syntax >>> pat = re.compile(r'<img data-original="(.*?)"') >>> pat.findall(s) ['https://rpic.douyucdn.cn/z1609/07/15/478748_160907150833.jpg'] >>>

?

總結(jié)

以上是生活随笔為你收集整理的python核心编程第三版(一)学习笔记:正则表达式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

国产精品视频专区 | 免费看的黄色 | av五月婷婷 | 国产 视频 高清 免费 | 欧美aa在线观看 | 久久国产品 | 日韩有色 | 四虎成人精品在永久免费 | 日日夜夜狠狠干 | 国产精品久久9 | 操操综合| 91香蕉视频720p | 91亚洲国产成人久久精品网站 | 韩国三级av在线 | 国产又粗又硬又长又爽的视频 | 在线精品在线 | 狠狠操电影网 | 一区三区在线欧 | 日韩女同av| 亚洲黄色免费在线 | 国产精品1000 | av色综合网 | 99久久精品久久久久久清纯 | 欧美激情综合五月 | 日日操网| 亚洲成人精品影院 | 91视频观看免费 | 亚洲最新av在线 | avav片| 日韩av不卡在线观看 | 国产精品伦一区二区三区视频 | 久久爱综合 | 亚洲精品视 | 在线视频日韩一区 | 国产麻豆精品在线观看 | 亚洲天堂毛片 | 国产在线更新 | 久久国产三级 | 天天干夜夜操视频 | 国产资源网 | 天天色影院 | 精品美女久久久久久免费 | 国产日产亚洲精华av | 中文字幕a∨在线乱码免费看 | 中文字幕在线播放日韩 | 天天舔天天射天天操 | 一区二区三区视频在线 | 国产伦精品一区二区三区高清 | 免费精品在线视频 | 国产流白浆高潮在线观看 | 国产精品午夜在线观看 | 欧美日韩视频在线播放 | 久久成人综合视频 | 久久理论电影 | 在线亚洲免费视频 | 亚洲三级网 | 欧美大片aaa| 久久免费视频1 | 91精品国产91久久久久久三级 | 欧美性生交大片免网 | 国产免费亚洲高清 | 亚洲国产成人高清精品 | 手机av观看 | 亚洲女欲精品久久久久久久18 | 激情久久网 | 亚洲一区 av | 国产原创中文在线 | 国产不卡在线观看视频 | 国产精品麻豆果冻传媒在线播放 | 午夜色婷婷 | 美女黄久久 | 69欧美视频 | 亚洲日本成人网 | 亚洲成人免费 | 一区二区三区手机在线观看 | 日韩黄色大片在线观看 | 国产色a在线观看 | av成人在线播放 | 一级欧美日韩 | 免费看一级| 亚洲高清不卡av | 国产一区二区午夜 | 日韩中文字幕国产 | 成人av在线网 | 欧美激情综合网 | 国产视频精品久久 | 久久免费国产视频 | 亚洲婷婷在线视频 | a级国产乱理伦片在线播放 久久久久国产精品一区 | 人人爱在线视频 | 亚州av成人| 波多野结衣在线视频一区 | 91精品国产一区二区三区 | 欧美午夜精品久久久久久孕妇 | 国产精品午夜在线观看 | 在线va视频 | 国产精品1024| 成人黄大片 | 精品福利视频在线 | 一区二区视频在线免费观看 | 视频一区亚洲 | 久久av免费 | 久久久久久久久久福利 | 人人爽人人爽人人爽人人爽 | 91精品国产91久久久久 | 亚洲福利精品 | 天天狠狠干 | 三级在线视频观看 | www·22com天天操 | 综合色综合色 | 中文字幕免费一区二区 | 国产亚洲精品久久久久久移动网络 | 国产精品久久久999 国产91九色视频 | 久久国产影院 | 国产精品毛片一区二区 | 深爱激情综合 | 欧美日韩国产二区三区 | 日一日操一操 | 99久久999久久久精玫瑰 | 精品视频免费观看 | av中文字幕第一页 | 亚洲网站在线看 | 日本公妇色中文字幕 | 91视频在线观看免费 | 欧美日韩三区二区 | 亚洲a资源 | 国产精品福利久久久 | 欧美成a人片在线观看久 | 人人擦 | 久久亚洲婷婷 | 首页av在线 | 中文在线天堂资源 | 五月综合 | 在线免费av网| 欧美人人 | 亚洲欧洲日韩在线观看 | 日本精品在线 | 欧美另类z0zx| av在线播放一区二区三区 | 最新真实国产在线视频 | 天天射天天干天天操 | 特黄免费av| 亚洲日本精品 | 久久99国产精品自在自在app | 久久久久久久久久伊人 | 911国产 | 在线精品亚洲一区二区 | 国产一区二区三区在线 | 在线成人短视频 | 久久精品之 | 四虎欧美| v片在线看| 亚洲欧美一区二区三区孕妇写真 | www天天操 | 国产精品2020 | 99精品国产成人一区二区 | 91专区在线观看 | 国产精品综合久久久久 | 美州a亚洲一视本频v色道 | 日韩精品一区在线观看 | 免费人成网 | 婷婷六月综合网 | 美女网站视频免费都是黄 | 正在播放五月婷婷狠狠干 | 中文字幕在线播放av | 国产黄色网 | 波多野结衣精品在线 | 欧美国产日韩在线视频 | 五月综合网| 天堂av免费观看 | 91一区二区三区在线观看 | 国产精品久久久久久久久久久久午夜 | 99久久久久久 | 久久综合影院 | 中文字幕亚洲不卡 | 日韩免费视频线观看 | 超碰精品在线 | 久久久在线 | 欧美大香线蕉线伊人久久 | 国产日韩欧美在线免费观看 | 在线视频手机国产 | 久久中文网 | 亚洲男人天堂2018 | 免费成人黄色 | 亚洲草视频 | 欧美日韩二三区 | 亚洲精选视频在线 | 丰满少妇对白在线偷拍 | 久久国内精品99久久6app | 96视频在线 | 亚洲手机天堂 | 天天干天天操av | 九九热在线免费观看 | 麻花豆传媒mv在线观看 | 成人激情开心网 | 99视频国产在线 | 国产成人一区二区在线观看 | 波多野结衣在线观看一区二区三区 | 99久久精品一区二区成人 | 色偷偷人人澡久久超碰69 | 91完整版在线观看 | 国产一区欧美一区 | 最新极品jizzhd欧美 | 999日韩| 国产91全国探花系列在线播放 | 国产精品 9999 | 午夜av片 | 久久伦理电影网 | 国产一区视频在线播放 | 亚洲国产高清在线观看视频 | 一区二区三区在线不卡 | 天堂va欧美va亚洲va老司机 | 国产一级大片在线观看 | 韩国三级av在线 | 黄色免费高清视频 | 久久精品站 | 久久96国产精品久久99软件 | 成人在线视频免费 | 黄色大片免费播放 | 国产视频一二区 | av丁香花 | 国产精品 国内视频 | 国产在线精品一区二区不卡了 | 夜夜躁狠狠躁日日躁 | 日韩毛片在线免费观看 | 99re在线视频观看 | 麻豆果冻剧传媒在线播放 | 最新日韩视频在线观看 | 日韩av免费大片 | 国产精品免费一区二区三区在线观看 | 日韩动漫免费观看高清完整版在线观看 | 午夜在线观看 | 精品一区二区三区香蕉蜜桃 | 久久五月婷婷综合 | 国产少妇在线观看 | 成人av在线网址 | 日韩天天操 | 国产精品永久免费在线 | 亚洲精品国产自产拍在线观看 | 在线导航av| 狠狠躁夜夜a产精品视频 | 麻豆传媒电影在线观看 | 九九三级毛片 | 日本久久久久久 | 成人午夜电影久久影院 | 亚洲国产电影在线观看 | 久久永久免费视频 | 91视频久久久久久 | 免费视频一二三区 | 9在线观看免费高清完整 | 综合久久久久久 | 99爱这里只有精品 | 视频国产精品 | 精品96久久久久久中文字幕无 | 国产福利小视频在线 | 日韩精品不卡在线 | 在线成人短视频 | 涩涩成人在线 | 极品中文字幕 | 欧美激情精品久久久 | 欧美淫aaa免费观看 日韩激情免费视频 | 久久久久久久久久久久亚洲 | 成人黄色电影视频 | 最近中文字幕 | 国产精品精品视频 | 国产精品久久久久久久久久了 | 色婷婷综合久久久中文字幕 | 欧美日韩一区二区三区在线观看视频 | 色综合久久网 | 欧洲视频一区 | 精品国产一区二区三区久久久蜜月 | 中文永久字幕 | 成人夜晚看av | 天天操操操操操 | 日韩簧片在线观看 | 在线播放 日韩专区 | 久久婷婷色综合 | 少妇性xxx | 骄小bbw搡bbbb揉bbbb | 波多野结衣视频一区二区三区 | 天天射天天舔天天干 | 国产麻豆视频在线观看 | 91国内在线| 亚洲波多野结衣 | 国产在线p | 黄色app网站在线观看 | 青青色影院 | 西西4444www大胆无视频 | av一区在线播放 | 日韩视频1 | 97视频在线观看播放 | 一区二区三区在线视频111 | 成 人 黄 色 片 在线播放 | 国产精品乱码一区二区视频 | 久久99免费| 国产精品久久久久久久久久久免费看 | 色视频网站在线 | 91亚洲精品视频 | 激情欧美日韩一区二区 | 最新av电影网站 | 国产h片在线观看 | 91视频国产高清 | av中文在线播放 | 成人小视频在线播放 | 亚洲视频久久久久 | 天天操天天操天天操天天操 | 91最新视频在线观看 | 久草视频在线免费播放 | 亚洲成人黄| 91日韩精品视频 | 香蕉久久久久 | 欧洲精品久久久久毛片完整版 | 天天干国产 | 91久久久国产精品 | 国产亚洲综合性久久久影院 | 国产精品久久久久aaaa | 国产精品久久久久久婷婷天堂 | 91| 91激情视频在线播放 | 精品国产乱码久久 | 精品国产一区二区在线 | 91九色自拍 | 91精品免费看 | 国产精品 亚洲精品 | 日韩av不卡播放 | 激情小说久久 | 91大神dom调教在线观看 | 亚洲精品一区二区三区在线观看 | 欧美一区二区在线免费看 | 91九色在线观看视频 | 久久狠狠亚洲综合 | 97在线观看免费高清 | 久久九九影视网 | 91在线视频免费观看 | 久久久久www | 99高清视频有精品视频 | 国产不卡免费 | 免费观看视频的网站 | 五月婷亚洲 | 色香蕉网 | 一区二区三区日韩在线观看 | 激情婷婷色 | 波多野结衣在线视频免费观看 | 国产第一页在线播放 | 91精品视频免费在线观看 | 久久夜色网 | 久久精品中文字幕 | 天天操天天操天天操天天操天天操天天操 | 久久69av| 欧美91视频 | 国产成人精品久久久久蜜臀 | av在线播放国产 | 国产亚洲精品成人av久久影院 | 婷婷丁香色 | 亚洲日本中文字幕在线观看 | 69成人在线 | av在线进入 | 国产aa精品 | 久久久久国产成人免费精品免费 | 天天干天天天天 | 三级小视频在线观看 | 日韩中文字幕网站 | 日韩av福利在线 | 中文字幕一区二区三 | 久久精品国亚洲 | 成年人在线观看网站 | 亚洲爱爱视频 | 久青草影院 | 日韩av资源站 | 欧美日韩不卡一区 | 丁香五婷 | 国产高清视频在线观看 | 丰满少妇麻豆av | 96视频免费在线观看 | 午夜精品区 | 美女国产| 永久免费精品视频 | 亚洲欧美国产日韩在线观看 | 亚洲午夜精品电影 | 激情深爱五月 | 狠狠干天天色 | 午夜久久影视 | 天天躁日日躁狠狠躁av中文 | 日韩欧美视频免费看 | 91精品久久久久久久久 | 日韩在线免费播放 | 欧美一区在线观看视频 | 香蕉视频在线免费 | 色资源网免费观看视频 | 最近日本韩国中文字幕 | 天天操天天射天天舔 | 久久另类视频 | 久草综合在线观看 | 国产永久免费高清在线观看视频 | 日韩中文在线播放 | www.av小说| 91视频国产免费 | 不卡的一区二区三区 | 91精品视频免费 | 国产福利一区二区三区在线观看 | 四虎影视成人精品国库在线观看 | 国产高清久久 | 久草在线观看资源 | 国产精品久久久777 成人手机在线视频 | 91精品伦理 | 久久久午夜电影 | 国产1区在线 | 在线视频18在线视频4k | 黄网站app在线观看免费视频 | 久久人人做| 奇米影视四色8888 | 国产a视频免费观看 | 又黄又爽的视频在线观看网站 | 国产在线精品观看 | 国产精品福利久久久 | 91正在播放| 超级碰碰碰免费视频 | 在线午夜av | 韩日三级av | 亚洲理论视频 | 国产999视频在线观看 | 91一区二区三区久久久久国产乱 | 久久精品99视频 | 超碰97人人射妻 | 丁香五月亚洲综合在线 | 欧美国产91| 日韩高清av | 成人在线网站观看 | 韩日在线一区 | 久久免费公开视频 | 久草av在线播放 | 午夜久久美女 | 国产精品成人av久久 | 国产精品久久久免费 | 午夜精品一区二区三区四区 | 五月天色综合 | 99精品国产高清在线观看 | 成人免费精品 | 成人丝袜 | 99热亚洲精品| 国内精品美女在线观看 | 91黄色成人| 美女在线免费观看视频 | 亚洲免费在线观看视频 | 亚洲 成人 一区 | 久久久久激情 | 亚洲精品啊啊啊 | 国产 日韩 欧美 中文 在线播放 | 欧美黄色成人 | 又黄又爽又刺激的视频 | 天天草天天干天天 | 免费电影一区二区三区 | 国产午夜av| www.夜夜草 | 免费av大全 | 日本 在线 视频 中文 有码 | 国产一区二区观看 | av看片在线观看 | 麻豆精品视频在线观看免费 | 国产91九色视频 | 精品在线观看一区二区 | 国产精品99久久久精品免费观看 | 美女一区网站 | 中文字幕高清av | 成人毛片一区 | 日本高清中文字幕有码在线 | 国产精品一区久久久久 | 欧美午夜精品久久久久久孕妇 | 日韩| 色97在线 | 成人一级电影在线观看 | 97超碰人人澡人人爱学生 | 国产在线传媒 | 国模精品一区二区三区 | 婷婷综合 | 亚洲天堂网在线观看视频 | 久久人人爽 | 日本韩国精品在线 | 操高跟美女 | 日韩二区三区在线观看 | 毛片一二区 | 东方av在线免费观看 | 日韩免费视频 | 性色av一区二区 | 欧美性大战久久久久 | 日日干av| 操操碰 | 麻豆视频国产在线观看 | 91色偷偷 | 91麻豆精品一区二区三区 | 日韩激情视频 | 亚洲第一中文字幕 | 国产精品乱码久久久久久1区2区 | 国内精品视频一区二区三区八戒 | 国产精品激情偷乱一区二区∴ | 99欧美视频| 中文字幕亚洲欧美 | 欧美性大战 | 亚洲精品玖玖玖av在线看 | 国产精品一区二区精品视频免费看 | 97国产大学生情侣白嫩酒店 | 香蕉视频久久久 | 色天天中文 | a在线观看视频 | 国产精品五月天 | 亚洲精品久久久蜜臀下载官网 | 国产福利精品在线观看 | 成人丝袜 | 狠狠精品 | 少妇bbw撒尿| 热久精品| 欧美一级视频一区 | 91禁在线看 | 国产在线高清精品 | 亚洲精品乱码久久久久久蜜桃91 | 久久香蕉影视 | 黄色片网站大全 | 国产在线观看xxx | 日本中文字幕在线一区 | 久久 精品一区 | 国产精品黑丝在线观看 | 久久在线视频在线 | 亚洲精品久久久久999中文字幕 | 一区二区三区动漫 | 不卡国产在线 | 午夜精品一区二区三区在线 | 9999精品视频 | 米奇四色影视 | 国产aa精品| 一级黄网| 久久看看 | 欧美va日韩va| 青青看片| 97视频中文字幕 | 又粗又长又大又爽又黄少妇毛片 | 69视频在线播放 | 亚洲无线视频 | 久久婷婷一区二区三区 | 91手机在线看片 | 免费日韩高清 | 免费看一级特黄a大片 | 九九av| 国产精品久久久久9999 | 国产成人精品一区二三区 | 亚洲欧美va| 91亚洲狠狠婷婷综合久久久 | 久久电影色 | 国产视频一区二区三区在线 | 国产精品日韩高清 | 在线观看日韩av | 国产小视频在线看 | 韩国av免费在线观看 | 国产精品视频地址 | 国产成人不卡 | 婷婷色在线播放 | 天天·日日日干 | 国产黄色在线观看 | 欧美久久久久久久久中文字幕 | 天堂av网在线 | 久久综合色影院 | 高清视频一区 | 日韩一区二区免费视频 | 狠狠操影视 | 999电影免费在线观看2020 | 欧美日韩1区 | 超碰99在线 | 日本中文字幕网址 | av在线播放免费 | 国产视频欧美视频 | 欧美色图狠狠干 | 男女激情网址 | 99色99| 超碰在线98 | 日日插日日干 | 亚洲激情电影在线 | 国产精品普通话 | 精油按摩av | 国产精品二区在线观看 | 日韩电影久久久 | 欧洲精品亚洲精品 | 亚洲激情视频在线观看 | 91看片一区二区三区 | 国产资源精品在线观看 | 97超碰人 | 日韩精品一区二区三区免费观看 | 久久久国产精华液 | 亚洲资源片 | 日韩免费视频线观看 | 久久国产91| 中文字幕人成不卡一区 | 国产精品综合av一区二区国产馆 | 亚洲精品在线资源 | 久久亚洲人 | 在线视频18在线视频4k | a视频在线观看 | 西西人体4444www高清视频 | 久久9视频| 国产精品久久久久aaaa九色 | 日韩精品一区二区三区免费视频观看 | 色综合天天射 | 丰满少妇在线观看 | 少妇精品久久久一区二区免费 | 国产视频在线一区二区 | 欧美性免费 | 久久新| 国产精品久久久久国产精品日日 | aaa毛片视频 | 91色亚洲| 色播99| 国产精品第72页 | 久久九九久久九九 | 91精品国产91久久久久 | 伊人国产在线观看 | 天天综合色 | 国产精品黄 | 国产一区在线播放 | 久久久久久久久久久久久久免费看 | 成人黄色免费在线观看 | 国产精品久久久久永久免费观看 | 国产一区在线视频播放 | 色综合久久中文综合久久牛 | 亚洲三级在线 | av一本久道久久波多野结衣 | av中文字幕在线电影 | 国产精品美女999 | 久久精品美女 | 国产一级不卡毛片 | 香蕉久久国产 | 成年人免费看av | 久久久久久欧美二区电影网 | 国产精品久久久久999 | 天天艹| 精品一区二区亚洲 | 成年人黄色免费视频 | 亚洲国产美女精品久久久久∴ | 狠狠躁夜夜躁人人爽超碰97香蕉 | 不卡中文字幕在线 | 欧美日韩在线播放 | 狠狠黄| 久久久久久精 | 精品a视频 | 狠狠激情中文字幕 | 国产精品九九久久久久久久 | 在线视频国产区 | 免费看污的网站 | 国产精品久久一卡二卡 | www.在线观看视频 | 久久国产精品二国产精品中国洋人 | 日韩在线精品 | 亚洲精品久久久久www | 午夜丰满寂寞少妇精品 | 国产精品永久久久久久久www | 欧美视频国产视频 | 美女黄频视频大全 | 91香蕉亚洲精品 | 国产探花在线看 | 久久免费99精品久久久久久 | 精品国产自在精品国产精野外直播 | 欧美一区日韩一区 | 一级一级一片免费 | 亚洲精品黄网站 | 六月婷操 | 亚洲精品成人在线 | 美女网站色 | 色综合久久五月天 | 五月婷婷在线视频 | 天堂av最新网址 | 国内精品久久久久影院优 | 亚洲va欧美va人人爽春色影视 | 久久黄页| 黄色影院在线免费观看 | 伊人视频 | 91.精品高清在线观看 | 日韩二区在线观看 | 亚洲天堂网在线视频 | 久久99国产精品 | 久草精品视频在线观看 | 最新亚洲视频 | 少妇自拍av | 日韩黄色大片在线观看 | 国产网站色 | 久久电影网站中文字幕 | 日本久久成人中文字幕电影 | 九九热精品视频在线播放 | 视频在线观看一区 | 成人久久影院 | 日韩欧美一区二区三区在线 | 久久久久久97三级 | 在线观看一区二区精品 | 激情欧美日韩一区二区 | 二区三区精品 | 欧美精品三级在线观看 | 在线看片日韩 | 精品国产乱码一区二区三区在线 | 欧美美女激情18p | 日日碰狠狠添天天爽超碰97久久 | 亚洲最快最全在线视频 | 日韩午夜网站 | 亚洲精品9 | 国产麻豆精品95视频 | 五月的婷婷 | 超碰免费久久 | 永久免费的av电影 | 91在线日韩 | 国产精品一区二区白浆 | 97av在线| 国产一在线精品一区在线观看 | 欧美日本啪啪无遮挡网站 | 精品美女久久久久久免费 | 久久久久久久久国产 | 国产精品午夜av | 在线99视频| 日韩二区精品 | 国产精品婷婷 | 国产精品av在线免费观看 | 国内外成人免费在线视频 | 综合国产在线 | 成人国产一区二区 | 亚洲国产影院av久久久久 | 亚洲无吗av | 激情黄色一级片 | 区一区二在线 | 93久久精品日日躁夜夜躁欧美 | 国产亚洲欧美日韩高清 | 亚洲免费视频在线观看 | 亚洲日本国产 | 91色在线观看视频 | 婷婷中文字幕在线观看 | 91九色国产视频 | 国产资源av| 欧美极品一区二区三区 | 欧美视频xxx| 中文字幕第一页在线 | 欧美另类成人 | 色婷婷综合久久久久 | 国产精品视频99 | 久久精品国产成人精品 | 2019国产精品 | 日韩精品视频免费看 | 精品福利在线 | 日韩精品在线看 | 国产精品成人久久久久久久 | 91精品国产乱码久久 | av在线h| 91看片在线免费观看 | 99综合电影在线视频 | 免费av电影网站 | 一区二区三区高清在线 | 日韩一级电影网站 | 中文字幕一区二区三区四区在线视频 | 亚洲综合欧美日韩狠狠色 | 中文字幕精品一区二区三区电影 | 天天干,夜夜爽 | 人人澡超碰碰 | 99久久99久国产黄毛片 | 四虎国产精品免费观看视频优播 | 日韩精品一区电影 | 久久视频在线观看中文字幕 | 欧美午夜久久久 | 视频三区在线 | 在线观看小视频 | 精品国产亚洲一区二区麻豆 | 日韩免费电影网站 | 免费看十八岁美女 | 精品国产亚洲在线 | 久久色在线播放 | 狠狠狠狠狠色综合 | 蜜臀久久99精品久久久酒店新书 | 亚洲欧洲av | 国产日韩精品在线观看 | av解说在线观看 | 香蕉在线观看视频 | 天天爽人人爽夜夜爽 | 特级黄色一级 | 在线探花| 亚洲黄色av网址 | 亚洲最新av在线网站 | 婷婷六月丁香激情 | 中文字幕在线观看免费高清电影 | 国产在线小视频 | 中文字幕观看在线 | 国产精品中文字幕在线播放 | 白丝av免费观看 | 免费亚洲片 | 天天天在线综合网 | 手机在线永久免费观看av片 | 亚洲国产精久久久久久久 | 天天操夜夜操天天射 | 国产精品成人自产拍在线观看 | 国产亚洲精品成人 | 中文字幕在线视频一区二区三区 | 91成人黄色 | 国产福利在线不卡 | 在线观看a视频 | 成人a级免费视频 | 久久 亚洲视频 | 精品免费久久久久久 | 午夜婷婷网 | 国产免费三级在线观看 | 欧美 亚洲 另类 激情 另类 | 久久成人国产精品 | 日韩免费小视频 | 人人爽人人做 | 视频一区视频二区在线观看 | 日韩在线免费高清视频 | 日韩免费在线观看网站 | 国产黄色片免费 | 精品国产精品一区二区夜夜嗨 | 免费99视频 | 中文在线免费观看 | 高清日韩一区二区 | 99在线观看视频 | 就要干b| a色视频| 91插插插免费视频 | 精品色999| 在线亚洲精品 | 人人爱人人舔 | 国产一级在线免费观看 | 国产精品久久久久9999吃药 | 狠狠干网址 | 欧美一级片| 国产一区在线看 | 久久精品中文字幕一区二区三区 | 久久理论影院 | 国产在线一线 | aaa亚洲精品一二三区 | 久久99久国产精品黄毛片入口 | 国产精品久久久久久久久久久久冷 | 九九九九九九精品任你躁 | 97精品在线视频 | 亚洲欧美怡红院 | 综合久久精品 | 欧美地下肉体性派对 | 成人日韩av | av东方在线 | 国产精品久久久久久久免费观看 | 狠狠色狠狠色综合系列 | 97超碰免费在线观看 | 99久久久国产精品 | 成人超碰在线 | 91视频传媒| 精品黄色片| 日韩电影在线一区二区 | 成人一区二区在线观看 | 日韩欧美在线国产 | 国产在线观看h | 亚洲永久在线 | 国产精品永久在线观看 | 亚洲国产97在线精品一区 | 日韩视频一区二区在线 | 久久躁日日躁aaaaxxxx | 成人av中文字幕 | 欧美一级免费在线 | 成人国产网址 | 四虎成人精品永久免费av九九 | 亚洲精品综合一二三区在线观看 | 超碰97在线资源站 | av电影免费在线看 | 中文字幕av日韩 | 精品久久久久久久久中文字幕 | 国产精品午夜免费福利视频 | 亚洲成人av电影 | 国产精品 欧美 日韩 | 日韩激情视频在线 | 日日干,天天干 | 亚洲国产理论片 | 日日夜夜狠狠 | 欧美激情综合五月 | 在线 日韩 av | 亚洲精品av中文字幕在线在线 | 国模吧一区 | 五月婷婷另类国产 | 夜夜嗨av色一区二区不卡 | 欧美激情第八页 | 久久综合天天 | 日韩69视频 | 久久免费av | 久草视频中文在线 | 国产一区免费视频 | 国产精品国产三级国产 | 午夜色大片在线观看 | 手机在线观看国产精品 | 国产成人在线一区 | 中文字幕av在线电影 | 亚洲免费激情 | 午夜久久福利 | 亚洲高清91| 一区二区三区四区五区在线 | 精品99久久 | 欧美性色综合网站 | 青草视频在线 | 亚洲男人天堂a | 91免费看黄色| 国产裸体视频bbbbb | 成人黄色大片在线观看 | 黄色软件网站在线观看 | 日韩免费高清在线 | 欧美激情综合五月 | 国产日产高清dvd碟片 | 99成人免费视频 | 伊人婷婷网 | 欧美日韩在线观看一区二区三区 | 99视频久| 亚洲国内精品在线 | 亚洲一区二区三区在线看 | 亚洲国产精品女人久久久 | 欧美精品被 | 成人在线视频免费看 | 黄色在线观看网站 | 中文 一区二区 | 麻花豆传媒mv在线观看 | 国产日韩欧美在线观看视频 | 久章草在线 | 麻豆传媒视频在线免费观看 | 四虎国产精品免费 | 六月色丁 | 97人人模人人爽人人喊网 | 成人欧美日韩国产 | 三级性生活视频 | 国产91精品看黄网站在线观看动漫 | 99色资源| 亚洲精品人人 | 91亚洲精品久久久蜜桃 | 国产一区网址 | 国产精品24小时在线观看 | 亚洲精品国产自产拍在线观看 | 成人一级视频在线观看 | 久久精品一区 | 99视频精品免费观看, | 精品毛片一区二区免费看 | 国产精品成人在线 | 成人午夜在线观看 | 四虎在线观看精品视频 | 成人在线免费视频 | av888av.com | 日韩特级片 | 亚洲精品视频在线观看免费 | 日本激情视频中文字幕 | 日日夜色| 一级黄色毛片 | 99一区二区三区 | 久久久久免费精品视频 | 国产一级一片免费播放放a 一区二区三区国产欧美 | 欧美一级片免费在线观看 | 国产黄在线 | 久久69av| 色综合久久99 | 欧美国产日韩一区 | 亚洲影视资源 | 美女视频黄免费网站 | 91精品视频在线观看免费 | 500部大龄熟乱视频使用方法 | 天天草夜夜 | 久久资源在线 | 色操插| 久久综合色婷婷 | 国产精品美女久久久久aⅴ 干干夜夜 | 国产欧美最新羞羞视频在线观看 | 亚洲国产视频网站 | 久久精品理论 | 蜜臀av夜夜澡人人爽人人桃色 | 日韩精品中文字幕在线 | av福利电影 | 涩涩资源网 | 久草电影网 | 久精品视频在线 | 国产精品va最新国产精品视频 | 欧美精品一区在线 | 欧美一级片在线 | 中文字幕第一页av | 综合国产在线观看 | 亚洲综合成人av | 伊人久久国产精品 | 精品一区二区久久久久久久网站 | 91视视频在线直接观看在线看网页在线看 | 成人黄色电影在线播放 | 91九色网站 | 国产精品亚洲片在线播放 | 成人理论在线观看 | 黄色a一级视频 | 中文字幕在线网 | 美女免费视频黄 | 国产伦理久久精品久久久久_ | 精品一区二区免费视频 | 日韩在线免费电影 | 国产成人一区在线 | 国产黄色大片免费看 | 日韩中文在线观看 | 久久综合久久综合九色 | 天天做日日做天天爽视频免费 | 日本在线观看中文字幕无线观看 | 久久久久久久99精品免费观看 | 亚洲视频久久久久 | 亚洲精品在线观看的 | 麻豆视频免费入口 | 日韩av有码在线 | 狠狠干天天色 |