精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Python正則表達式re模塊簡明筆記

開發(fā) 后端
要注意的是,正則表達式并不是一個程序,而是用于處理字符串的一種模式,如果你想用它來處理字符串,就必須使用支持正則表達式的工具,比如 Linux 中的 awk, sed, grep,或者編程語言 Perl, Python, Java 等等。

簡介

正則表達式(regular expression)是可以匹配文本片段的模式。最簡單的正則表達式就是普通字符串,可以匹配其自身。比如,正則表達式 ‘hello’ 可以匹配字符串 ‘hello’。

要注意的是,正則表達式并不是一個程序,而是用于處理字符串的一種模式,如果你想用它來處理字符串,就必須使用支持正則表達式的工具,比如 Linux 中的 awk, sed, grep,或者編程語言 Perl, Python, Java 等等。

正則表達式有多種不同的風格,下表列出了適用于 Python 或 Perl 等編程語言的部分元字符以及說明:

re 模塊

在 Python 中,我們可以使用內(nèi)置的 re 模塊來使用正則表達式。

有一點需要特別注意的是,正則表達式使用 \ 對特殊字符進行轉(zhuǎn)義,比如,為了匹配字符串 ‘python.org’,我們需要使用正則表達式 'python\.org',而 Python 的字符串本身也用 \ 轉(zhuǎn)義,所以上面的正則表達式在 Python 中應(yīng)該寫成 'python\\.org',這會很容易陷入 \ 的困擾中,因此,我們建議使用 Python 的原始字符串,只需加一個 r 前綴,上面的正則表達式可以寫成:

r'python\.org'

re 模塊提供了不少有用的函數(shù),用以匹配字符串,比如:

  • compile 函數(shù)

  • match 函數(shù)

  • search 函數(shù)

  • findall 函數(shù)

  • finditer 函數(shù)

  • split 函數(shù)

  • sub 函數(shù)

  • subn 函數(shù)

re 模塊的一般使用步驟如下:

  • 使用 compile 函數(shù)將正則表達式的字符串形式編譯為一個 Pattern 對象

  • 通過 Pattern 對象提供的一系列方法對文本進行匹配查找,獲得匹配結(jié)果(一個 Match 對象)

  • ***使用 Match 對象提供的屬性和方法獲得信息,根據(jù)需要進行其他的操作

compile 函數(shù)

compile 函數(shù)用于編譯正則表達式,生成一個 Pattern 對象,它的一般使用形式如下:

re.compile(pattern[, flag])

其中,pattern 是一個字符串形式的正則表達式,flag 是一個可選參數(shù),表示匹配模式,比如忽略大小寫,多行模式等。

下面,讓我們看看例子。

import re

# 將正則表達式編譯成 Pattern 對象
pattern = re.compile(r'\d+')

在上面,我們已將一個正則表達式編譯成 Pattern 對象,接下來,我們就可以利用 pattern 的一系列方法對文本進行匹配查找了。Pattern 對象的一些常用方法主要有:

  • match 方法

  • search 方法

  • findall 方法

  • finditer 方法

  • split 方法

  • sub 方法

  • subn 方法

match 方法

match 方法用于查找字符串的頭部(也可以指定起始位置),它是一次匹配,只要找到了一個匹配的結(jié)果就返回,而不是查找所有匹配的結(jié)果。它的一般使用形式如下:

match(string[, pos[, endpos]])

其中,string 是待匹配的字符串,pos 和 endpos 是可選參數(shù),指定字符串的起始和終點位置,默認值分別是 0 和 len (字符串長度)。因此,當你不指定 pos 和 endpos 時,match 方法默認匹配字符串的頭部

當匹配成功時,返回一個 Match 對象,如果沒有匹配上,則返回 None。

看看例子。

>>> import re
>>> pattern = re.compile(r'\d+')                    # 用于匹配至少一個數(shù)字
>>> m = pattern.match('one12twothree34four')        # 查找頭部,沒有匹配
>>> print m
None
>>> m = pattern.match('one12twothree34four', 2, 10) # 從'e'的位置開始匹配,沒有匹配
>>> print m
None
>>> m = pattern.match('one12twothree34four', 3, 10) # 從'1'的位置開始匹配,正好匹配
>>> print m                                         # 返回一個 Match 對象
<_sre.SRE_Match object at 0x10a42aac0>
>>> m.group(0)   # 可省略 0
'12'
>>> m.start(0)   # 可省略 0
3
>>> m.end(0)     # 可省略 0
5
>>> m.span(0)    # 可省略 0
(3, 5)

在上面,當匹配成功時返回一個 Match 對象,其中:

  • group([group1, …]) 方法用于獲得一個或多個分組匹配的字符串,當要獲得整個匹配的子串時,可直接使用 group() 或 group(0)

  • start([group]) 方法用于獲取分組匹配的子串在整個字符串中的起始位置(子串***個字符的索引),參數(shù)默認值為 0;

  • end([group]) 方法用于獲取分組匹配的子串在整個字符串中的結(jié)束位置(子串***一個字符的索引+1),參數(shù)默認值為 0;

  • span([group]) 方法返回 (start(group), end(group))

再看看一個例子:

>>> import re
>>> pattern = re.compile(r'([a-z]+) ([a-z]+)', re.I)   # re.I 表示忽略大小寫
>>> m = pattern.match('Hello World Wide Web')
>>> print m                               # 匹配成功,返回一個 Match 對象
<_sre.SRE_Match object at 0x10bea83e8>
>>> m.group(0)                            # 返回匹配成功的整個子串
'Hello World'
>>> m.span(0)                             # 返回匹配成功的整個子串的索引
(0, 11)
>>> m.group(1)                            # 返回***個分組匹配成功的子串
'Hello'
>>> m.span(1)                             # 返回***個分組匹配成功的子串的索引
(0, 5)
>>> m.group(2)                            # 返回第二個分組匹配成功的子串
'World'
>>> m.span(2)                             # 返回第二個分組匹配成功的子串
(6, 11)
>>> m.groups()                            # 等價于 (m.group(1), m.group(2), ...)
('Hello', 'World')
>>> m.group(3)                            # 不存在第三個分組
Traceback (most recent call last):
  File "<stdin>", line 1, in <module> IndexError: no such group

search 方法

search 方法用于查找字符串的任何位置,它也是一次匹配,只要找到了一個匹配的結(jié)果就返回,而不是查找所有匹配的結(jié)果,它的一般使用形式如下:

search(string[, pos[, endpos]])

其中,string 是待匹配的字符串,pos 和 endpos 是可選參數(shù),指定字符串的起始和終點位置,默認值分別是 0 和 len (字符串長度)。

當匹配成功時,返回一個 Match 對象,如果沒有匹配上,則返回 None。

讓我們看看例子:

>>> import re
>>> pattern = re.compile('\d+')
>>> m = pattern.search('one12twothree34four'# 這里如果使用 match 方法則不匹配
>>> m
<_sre.SRE_Match object at 0x10cc03ac0>
>>> m.group()
'12'
>>> m = pattern.search('one12twothree34four', 10, 30# 指定字符串區(qū)間
>>> m
<_sre.SRE_Match object at 0x10cc03b28>
>>> m.group()
'34'
>>> m.span()
(13, 15)

再來看一個例子:

# -*- coding: utf-8 -*-
import re

# 將正則表達式編譯成 Pattern 對象
pattern = re.compile(r'\d+')

# 使用 search() 查找匹配的子串,不存在匹配的子串時將返回 None
# 這里使用 match() 無法成功匹配
m = pattern.search('hello 123456 789')

if m:
    # 使用 Match 獲得分組信息
    print 'matching string:',m.group()
    print 'position:',m.span()

執(zhí)行結(jié)果:

matching string: 123456
position: (6, 12)

findall 方法

上面的 match 和 search 方法都是一次匹配,只要找到了一個匹配的結(jié)果就返回。然而,在大多數(shù)時候,我們需要搜索整個字符串,獲得所有匹配的結(jié)果。

findall 方法的使用形式如下:

findall(string[, pos[, endpos]])

其中,string 是待匹配的字符串,pos 和 endpos 是可選參數(shù),指定字符串的起始和終點位置,默認值分別是 0 和 len (字符串長度)。

findall 以列表形式返回全部能匹配的子串,如果沒有匹配,則返回一個空列表。

看看例子:

import re

pattern = re.compile(r'\d+')   # 查找數(shù)字
result1 = pattern.findall('hello 123456 789')
result2 = pattern.findall('one1two2three3four4', 0, 10)

print result1
print result2

執(zhí)行結(jié)果:

['123456', '789']
['1', '2']

finditer 方法

finditer 方法的行為跟 findall 的行為類似,也是搜索整個字符串,獲得所有匹配的結(jié)果。但它返回一個順序訪問每一個匹配結(jié)果(Match 對象)的迭代器。

看看例子:

# -*- coding: utf-8 -*-

import re

pattern = re.compile(r'\d+')

result_iter1 = pattern.finditer('hello 123456 789')
result_iter2 = pattern.finditer('one1two2three3four4', 0, 10)

print type(result_iter1)
print type(result_iter2)

print 'result1...'
for m1 in result_iter1:   # m1 是 Match 對象
    print 'matching string: {}, position: {}'.format(m1.group(), m1.span())

print 'result2...'
for m2 in result_iter2:
    print 'matching string: {}, position: {}'.format(m2.group(), m2.span())

執(zhí)行結(jié)果:

<type 'callable-iterator'>
<type 'callable-iterator'>
result1...
matching string: 123456, position: (6, 12)
matching string: 789, position: (13, 16)
result2...
matching string: 1, position: (3, 4)
matching string: 2, position: (7, 8)

split 方法

split 方法按照能夠匹配的子串將字符串分割后返回列表,它的使用形式如下:

split(string[, maxsplit])

其中,maxsplit 用于指定***分割次數(shù),不指定將全部分割。

看看例子:

import re

p = re.compile(r'[\s\,\;]+')
print p.split('a,b;; c   d')

執(zhí)行結(jié)果:

['a', 'b', 'c', 'd']

sub 方法

sub 方法用于替換。它的使用形式如下:

sub(repl, string[, count])

其中,repl 可以是字符串也可以是一個函數(shù):

  • 如果 repl 是字符串,則會使用 repl 去替換字符串每一個匹配的子串,并返回替換后的字符串,另外,repl 還可以使用 \id 的形式來引用分組,但不能使用編號 0;

  • 如果 repl 是函數(shù),這個方法應(yīng)當只接受一個參數(shù)(Match 對象),并返回一個字符串用于替換(返回的字符串中不能再引用分組)。

count 用于指定最多替換次數(shù),不指定時全部替換。

看看例子:

import re

p = re.compile(r'(\w+) (\w+)')
s = 'hello 123, hello 456'

def func(m):
    return 'hi' + ' ' + m.group(2)

print p.sub(r'hello world', s)  # 使用 'hello world' 替換 'hello 123' 和 'hello 456'
print p.sub(r'\2 \1', s)        # 引用分組
print p.sub(func, s)
print p.sub(func, s, 1)         # 最多替換一次

執(zhí)行結(jié)果:

hello world, hello world
123 hello, 456 hello
hi 123, hi 456
hi 123, hello 456

subn 方法

subn 方法跟 sub 方法的行為類似,也用于替換。它的使用形式如下:

subn(repl, string[, count])

它返回一個元組:

(sub(repl, string[, count]), 替換次數(shù))

元組有兩個元素,***個元素是使用 sub 方法的結(jié)果,第二個元素返回原字符串被替換的次數(shù)。

看看例子:

import re

p = re.compile(r'(\w+) (\w+)')
s = 'hello 123, hello 456'

def func(m):
    return 'hi' + ' ' + m.group(2)

print p.subn(r'hello world', s)
print p.subn(r'\2 \1', s)
print p.subn(func, s)
print p.subn(func, s, 1)

執(zhí)行結(jié)果:

('hello world, hello world', 2)
('123 hello, 456 hello', 2)
('hi 123, hi 456', 2)
('hi 123, hello 456', 1)

其他函數(shù)

事實上,使用 compile 函數(shù)生成的 Pattern 對象的一系列方法跟 re 模塊的多數(shù)函數(shù)是對應(yīng)的,但在使用上有細微差別。

match 函數(shù)

match 函數(shù)的使用形式如下:

re.match(pattern, string[, flags]):

其中,pattern 是正則表達式的字符串形式,比如 \d+[a-z]+

而 Pattern 對象的 match 方法使用形式是:

match(string[, pos[, endpos]])

可以看到,match 函數(shù)不能指定字符串的區(qū)間,它只能搜索頭部,看看例子:

import re
m1 = re.match(r'\d+', 'One12twothree34four')
if m1:
    print 'matching string:',m1.group()
else:
    print 'm1 is:',m1

m2 = re.match(r'\d+', '12twothree34four')
if m2:
    print 'matching string:', m2.group()
else:
    print 'm2 is:',m2

執(zhí)行結(jié)果:

m1 is: None
matching string: 12

search 函數(shù)

search 函數(shù)的使用形式如下:

re.search(pattern, string[, flags])

search 函數(shù)不能指定字符串的搜索區(qū)間,用法跟 Pattern 對象的 search 方法類似。

findall 函數(shù)

findall 函數(shù)的使用形式如下:

re.findall(pattern, string[, flags])

findall 函數(shù)不能指定字符串的搜索區(qū)間,用法跟 Pattern 對象的 findall 方法類似。

看看例子:

import re

print re.findall(r'\d+', 'hello 12345 789')

# 輸出
['12345', '789']

finditer 函數(shù)

finditer 函數(shù)的使用方法跟 Pattern 的 finditer 方法類似,形式如下:

re.finditer(pattern, string[, flags])

split 函數(shù)

split 函數(shù)的使用形式如下:

re.split(pattern, string[, maxsplit])

sub 函數(shù)

sub 函數(shù)的使用形式如下:

re.sub(pattern, repl, string[, count])

subn 函數(shù)

subn 函數(shù)的使用形式如下:

re.subn(pattern, repl, string[, count])

到底用哪種方式

從上文可以看到,使用 re 模塊有兩種方式:

  • 使用 re.compile 函數(shù)生成一個 Pattern 對象,然后使用 Pattern 對象的一系列方法對文本進行匹配查找;

  • 直接使用 re.match, re.search 和 re.findall 等函數(shù)直接對文本匹配查找;

下面,我們用一個例子展示這兩種方法。

先看第 1 種用法:

import re

# 將正則表達式先編譯成 Pattern 對象
pattern = re.compile(r'\d+')

print pattern.match('123, 123')
print pattern.search('234, 234')
print pattern.findall('345, 345')

再看第 2 種用法:

import re

print re.match(r'\d+', '123, 123')
print re.search(r'\d+', '234, 234')
print re.findall(r'\d+', '345, 345')

如果一個正則表達式需要用到多次(比如上面的 \d+),在多種場合經(jīng)常需要被用到,出于效率的考慮,我們應(yīng)該預(yù)先編譯該正則表達式,生成一個 Pattern 對象,再使用該對象的一系列方法對需要匹配的文件進行匹配;而如果直接使用 re.match, re.search 等函數(shù),每次傳入一個正則表達式,它都會被編譯一次,效率就會大打折扣。

因此,我們推薦使用第 1 種用法。

匹配中文

在某些情況下,我們想匹配文本中的漢字,有一點需要注意的是,中文的 unicode 編碼范圍 主要在 [\u4e00-\u9fa5],這里說主要是因為這個范圍并不完整,比如沒有包括全角(中文)標點,不過,在大部分情況下,應(yīng)該是夠用的。

假設(shè)現(xiàn)在想把字符串 title = u'你好,hello,世界' 中的中文提取出來,可以這么做:

# -*- coding: utf-8 -*-

import re

title = u'你好,hello,世界'
pattern = re.compile(ur'[\u4e00-\u9fa5]+')
result = pattern.findall(title)

print result

注意到,我們在正則表達式前面加上了兩個前綴 ur,其中 r 表示使用原始字符串,u 表示是 unicode 字符串。

執(zhí)行結(jié)果:

[u'\u4f60\u597d', u'\u4e16\u754c']

貪婪匹配

在 Python 中,正則匹配默認是貪婪匹配(在少數(shù)語言中可能是非貪婪),也就是匹配盡可能多的字符

比如,我們想找出字符串中的所有 div 塊:

import re

content = 'aa<div>test1</div>bb<div>test2</div>cc'
pattern = re.compile(r'<div>.*</div>')
result = pattern.findall(content)

print result

執(zhí)行結(jié)果:

['<div>test1</div>bb<div>test2</div>']

由于正則匹配是貪婪匹配,也就是盡可能多的匹配,因此,在成功匹配到***個 </div> 時,它還會向右嘗試匹配,查看是否還有更長的可以成功匹配的子串。

如果我們想非貪婪匹配,可以加一個 ?,如下:

import re

content = 'aa<div>test1</div>bb<div>test2</div>cc'
pattern = re.compile(r'<div>.*?</div>')    # 加上 ?
result = pattern.findall(content)

print result

結(jié)果:

['<div>test1</div>', '<div>test2</div>']

小結(jié)

re 模塊的一般使用步驟如下:

  • 使用 compile 函數(shù)將正則表達式的字符串形式編譯為一個 Pattern 對象;

  • 通過 Pattern 對象提供的一系列方法對文本進行匹配查找,獲得匹配結(jié)果(一個 Match 對象);

  • ***使用 Match 對象提供的屬性和方法獲得信息,根據(jù)需要進行其他的操作;

Python 的正則匹配默認是貪婪匹配。

責任編輯:張燕妮 來源: FunHacks
相關(guān)推薦

2023-11-15 08:32:16

正則表達式Python

2024-09-14 09:18:14

Python正則表達式

2021-01-27 11:34:19

Python正則表達式字符串

2010-03-25 18:25:36

Python正則表達式

2018-09-27 15:25:08

正則表達式前端

2020-09-04 09:16:04

Python正則表達式虛擬機

2009-08-13 15:24:27

C#正則表達式

2009-08-11 13:00:41

C#正則表達式

2010-03-01 15:51:59

Python則表達式

2010-03-11 08:55:45

python正則表達式

2019-12-10 10:40:57

Python正則表達式編程語言

2010-07-13 16:56:30

Perl正則表達式

2015-04-16 11:16:05

PHPPOSIX正則表達式

2022-03-28 06:19:14

正則表達式開發(fā)

2017-05-12 10:47:45

Linux正則表達式程序基礎(chǔ)

2009-09-16 18:19:34

正則表達式組

2019-07-17 15:45:47

正則表達式字符串前端

2009-02-18 09:48:20

正則表達式Java教程

2011-06-02 12:34:16

正則表達式

2016-11-10 16:21:22

Java 正則表達式
點贊
收藏

51CTO技術(shù)棧公眾號

久久久久免费视频| 欧美三区在线视频| 久久福利电影| 中文字幕理论片| 国内精品福利| 国产亚洲视频在线| 无码人妻丰满熟妇啪啪网站| 欧洲亚洲两性| 亚洲一区二区影院| 日本一区二区在线视频观看| 99久久久国产精品无码免费| 久久国产毛片| 久99九色视频在线观看| 免费看黄色三级| av成人综合| 69堂成人精品免费视频| 人人干人人视频| 黄页在线观看免费| 国产精品久久久久久久浪潮网站 | 秋霞网一区二区| 久久福利视频一区二区| 日本欧美中文字幕| 国产精品111| 婷婷另类小说| 一区二区三区美女xx视频| 欧美一级片黄色| 精品国产亚洲一区二区在线观看 | 99热这里只有精品在线| 人人狠狠综合久久亚洲| 97视频在线免费观看| 欧美激情国产精品免费| 天天做天天爱天天综合网2021| 亚洲人在线视频| 屁屁影院国产第一页| 欧美一级大片在线视频| 在线成人午夜影院| 岛国毛片在线播放| 日韩一区精品| 欧美综合天天夜夜久久| 欧美污视频网站| 国产福利片在线观看| 一区二区欧美精品| 国内少妇毛片视频| 超清av在线| 亚洲资源在线观看| 97在线免费视频观看| av网站在线看| 亚洲啪啪综合av一区二区三区| 亚洲一区三区视频在线观看 | 亚洲尤物av| 亚洲美女www午夜| 懂色av粉嫩av蜜乳av| 欧美1区2区3区4区| 亚洲美女久久久| 免费在线观看污| 色综合中文网| 中文国产亚洲喷潮| 精品国产精品国产精品| 欧美在线国产| 国产69精品99久久久久久宅男| 久久久久久久久久久久久久免费看| 欧美另类综合| 97涩涩爰在线观看亚洲| 91video| 日韩精品一级二级| 国产欧美一区二区三区在线看| 在线观看免费视频a| 国产一区二区三区在线看麻豆| 色天天综合久久久久综合片| 成人激情视频网| a级片在线播放| 成人免费视频视频在线观看免费| 久久99精品久久久久久久青青日本| 日本啊v在线| 国产精品视频第一区| 熟妇熟女乱妇乱女网站| 麻豆av在线播放| 一本在线高清不卡dvd| 91人人澡人人爽人人精品| 亚洲成人高清| 亚洲黄页网在线观看| 影音先锋制服丝袜| 中国成人一区| 日本精品久久久| 91精品国产乱码久久久| 成人网页在线观看| 无码免费一区二区三区免费播放 | 婷婷激情图片久久| 97视频网站入口| 一本色道久久综合亚洲| 成人小视频免费在线观看| 色一情一乱一伦一区二区三区| 免费av在线| 精品动漫一区二区三区| 91精品999| 亚洲日本三级| 欧美华人在线视频| 日韩精品在线一区二区三区| 国产成人av电影免费在线观看| 日韩精品福利视频| av在线加勒比| 欧美美女视频在线观看| asian性开放少妇pics| 91tv精品福利国产在线观看| 欧洲美女免费图片一区| 亚洲精品成人电影| 国产精品久久久久久亚洲伦| www.日本在线播放| 欧美专区一区| 日韩一区av在线| 亚洲婷婷综合网| 成人网男人的天堂| 天天做天天爱天天高潮| 性高爱久久久久久久久| 亚洲国产天堂网精品网站| 黄色录像免费观看| 日本伊人精品一区二区三区观看方式| 国产欧美丝袜| 四季久久免费一区二区三区四区| 欧美乱熟臀69xxxxxx| 成人免费av片| 亚洲欧美清纯在线制服| 国产精品综合久久久久久| 1区2区在线观看| 欧美一区二区三区喷汁尤物| 夫妇露脸对白88av| 日韩中文字幕1| 久久久久久九九九九| 久久大胆人体| 日韩一区二区三区视频| 日本少妇aaa| 奇米在线7777在线精品| 日韩亚洲不卡在线| 国产成人精品123区免费视频| 日韩av中文在线| 日韩欧美视频在线免费观看| 丁香六月久久综合狠狠色| 久久人妻无码一区二区| 99久久这里有精品| 麻豆国产va免费精品高清在线| 亚洲天堂免费av| 中文字幕高清一区| 日本黄大片一区二区三区| 日韩成人精品一区二区| 国产精品久久久久久久久久久新郎| 日韩av高清在线| 色综合久久综合中文综合网| 制服 丝袜 综合 日韩 欧美| 久久先锋影音| 色播五月综合| 久久精品xxxxx| 色老头一区二区三区在线观看| 中国女人真人一级毛片| 国产精品久久久久久福利一牛影视 | 国产福利视频网站| 激情深爱一区二区| 红桃一区二区三区| 波多野结衣在线一区二区| 国内自拍欧美激情| 欧美日韩国产综合视频| 在线精品国精品国产尤物884a| 日本猛少妇色xxxxx免费网站| 美日韩一区二区三区| 国内自拍中文字幕| 久久午夜影院| 国产精品电影久久久久电影网| аⅴ资源新版在线天堂| 91精品国产手机| 亚洲国产综合久久| 久久噜噜亚洲综合| 中文字幕线观看| 雨宫琴音一区二区在线| 欧美日韩一区二区三| 青青在线精品| 久久久久久久一区二区三区| 免费资源在线观看| 5858s免费视频成人| 不卡的免费av| 中文av字幕一区| 亚洲精品鲁一鲁一区二区三区| 亚洲影音先锋| 在线视频91| 欧美在线导航| 成人免费在线视频网站| 国产理论在线| 久久亚洲精品一区二区| 午夜av免费观看| 欧美喷潮久久久xxxxx| 久久综合综合久久| 欧美激情在线观看视频免费| 欧美日韩一区二区区别是什么| 噜噜爱69成人精品| 黄色影视在线观看| 国产成人高清| 国产精品乱子乱xxxx| 成人免费在线观看视频| 亚州国产精品久久久| 亚洲乱亚洲乱妇| 精品中文字幕久久久久久| 国产熟女一区二区三区五月婷| 色综合久久中文字幕| 精品少妇久久久| 国产精品国产三级国产普通话蜜臀| 国产黑丝一区二区| 韩国视频一区二区| 成人免费毛片播放| 亚洲精品少妇| 精品一区二区成人免费视频 | 精品999日本久久久影院| 青青草一区二区| 国产美女一区视频| 久久精品视频免费播放| 可以在线观看的av网站| 亚洲第一页自拍| 国产高清免费观看| 欧洲亚洲国产日韩| www.国产一区二区| 亚洲第一久久影院| 久草国产在线观看| 一区二区三区四区亚洲| 成人精品一二三区| 国产女人aaa级久久久级 | jizz欧美性11| 三级久久三级久久久| 欧洲黄色一级视频| 99国产精品久久久久久久成人热| 日韩一级特黄毛片| 中文字幕一区二区三区在线视频 | brazzers在线观看| 色综合天天综合网国产成人网| 麻豆传媒免费在线观看| 色偷偷综合社区| 婷婷在线视频观看| 中文字幕日韩欧美| 99re在线视频| 尤物精品国产第一福利三区| 国产午夜精品一区理论片| 亚洲欧美另类在线观看| 黄色免费在线播放| 亚洲天堂网在线观看| 久草视频视频在线播放| 亚洲人高潮女人毛茸茸| av在线免费观看网| 最近2019年手机中文字幕| 永久免费av在线| 色噜噜狠狠狠综合曰曰曰 | 樱花影视一区二区| 久草国产在线视频| 亚洲成av人片一区二区梦乃| 日韩欧美不卡视频| 色悠久久久久综合欧美99| 精品久久久久久久久久久国产字幕 | 99综合电影在线视频| aaaaaav| 久久精品夜夜夜夜久久| 欧美丰满老妇熟乱xxxxyyy| 亚洲欧洲日产国产综合网| 国产精品成人69xxx免费视频| 亚洲欧洲韩国日本视频| 久热精品在线观看| 欧美日韩中文字幕在线视频| 亚洲天堂男人av| 7799精品视频| 亚洲欧美另类视频| 亚洲跨种族黑人xxx| 91在线看黄| 欧美日韩爱爱视频| 手机在线观看av| 国产精品一区二区久久国产| 国产精品麻豆| 精品在线观看一区二区| 欧美色图国产精品| 91精品国产毛片武则天| 99伊人成综合| 中日韩av在线播放| 成人不卡免费av| 丁香花五月婷婷| 一区二区三区在线高清| 亚洲欧美日韩激情| 欧美一卡2卡3卡4卡| 天天舔天天干天天操| 色小说视频一区| 黄视频免费在线看| 国产欧美日韩中文字幕在线| 国产精品videossex| 亚洲精品影院| 亚洲人成人一区二区三区| 亚洲精品怡红院| 国产成人aaaa| 欧美xxxooo| 色综合天天狠狠| www.国产免费| 在线丨暗呦小u女国产精品| 青青在线视频| 成人黄色大片在线免费观看| 窝窝社区一区二区| av动漫在线播放| 日韩激情视频在线观看| 又黄又色的网站| 国产精品理论在线观看| 天天综合网久久综合网| 日韩视频免费直播| av中文在线| 国产97在线视频| 老牛影视av一区二区在线观看| 国产高清精品软男同| 久久久国产精品一区二区中文| www.四虎在线| 亚洲婷婷综合久久一本伊一区| 欧美brazzers| 亚洲精品视频免费| 日韩深夜视频| 国产伦精品一区二区三| 亚洲国产一区二区在线观看| 三级在线视频观看| 久久久一区二区三区捆绑**| 日韩欧美亚洲一区二区三区| 欧美成人午夜电影| 国产在线二区| 91色视频在线导航| 日韩精品一区二区三区免费观看| 黄色国产精品视频| 91丝袜美腿高跟国产极品老师 | 日韩精品免费视频人成| 中文在线一区二区三区| 亚洲国产一区二区视频| 国产农村妇女毛片精品久久| 日韩中文字幕不卡视频| 日本在线一区二区| 亚洲午夜精品一区二区三区| 丝袜a∨在线一区二区三区不卡| 久久精品综合视频| 欧美日韩亚洲91| 日本免费一区二区三区最新| 欧美在线观看网站| 亚州综合一区| 久章草在线视频| 国产午夜久久久久| 夜夜爽妓女8888视频免费观看| 亚洲人成人99网站| 巨胸喷奶水www久久久免费动漫| 日本中文不卡| 日本欧美加勒比视频| 免费黄色在线网址| 91精品欧美福利在线观看| 八戒八戒神马在线电影| 91传媒视频免费| 国产精品v亚洲精品v日韩精品| 成年人看片网站| 婷婷久久综合九色综合伊人色| 亚洲欧美日本在线观看| 国产高清在线不卡| 青青草国产免费一区二区下载| 天天综合网日韩| 亚洲精品国产一区二区精华液| 国产后入清纯学生妹| 久久久亚洲精选| 亚洲aa在线| 777视频在线| 亚洲精品中文字幕在线观看| 亚洲精品一区二区三区蜜桃| 4p变态网欧美系列| 欧美性感美女一区二区| 在线视频观看一区二区| 一区二区激情小说| 日韩a级作爱片一二三区免费观看| 国产精品www网站| 亚洲乱码精品| 国产老熟女伦老熟妇露脸| 色嗨嗨av一区二区三区| 在线国产情侣| 国产精品国产精品| 久久深夜福利| 无码黑人精品一区二区| 亚洲第一区在线| 中文字幕系列一区| 青青草视频国产| 久久日韩精品一区二区五区| 国产精品无码久久久久成人app| 久久久久久av| 久久国产小视频| 91传媒理伦片在线观看| 欧美伊人久久大香线蕉综合69| 91cn在线观看| 日韩精品久久一区| 丁香六月久久综合狠狠色| 中文区中文字幕免费看| 欧美激情按摩在线| 日韩a一区二区| 一区二区视频观看| 91精品国产欧美日韩| 日本久久免费| 亚洲五码在线观看视频| 欧美国产综合色视频| 亚洲精品一区二区口爆| 成人网在线免费看| 久久亚洲精选| 日韩黄色a级片| 久久九九全国免费精品观看| 最新国产一区|