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

如何優(yōu)化正則表達(dá)式性能?

系統(tǒng) Linux
正則表達(dá)式是計(jì)算機(jī)科學(xué)的一個(gè)概念,很多語言都實(shí)現(xiàn)了它。正則表達(dá)式使用一些特定的元字符來檢索、匹配以及替換符合規(guī)定的字符串。

 

一.背景

正則表達(dá)式是計(jì)算機(jī)科學(xué)的一個(gè)概念,很多語言都實(shí)現(xiàn)了它。正則表達(dá)式使用一些特定的元字符來檢索、匹配以及替換符合規(guī)定的字符串。

構(gòu)造正則表達(dá)式語法的元字符,由普通字符、標(biāo)準(zhǔn)字符、限定字符(量詞)、定位符(邊界字符)組成,詳情如下:

二.正則表達(dá)式引擎

正則表達(dá)式是一個(gè)用正則符號(hào)寫出的公式,程序?qū)@個(gè)公式進(jìn)行語法分析,建立一個(gè)語法分析樹,再根據(jù)這個(gè)分析樹結(jié)合正則表達(dá)式的引擎生成執(zhí)行程序(這個(gè)執(zhí)行程序我們把它稱作狀態(tài)機(jī),也叫狀態(tài)自動(dòng)機(jī)),用于字符匹配。

而這里的正則表達(dá)式引擎就是一套核心算法,用于建立狀態(tài)機(jī)。

目前實(shí)現(xiàn)正則表達(dá)式引擎的方式有兩種:DFA自動(dòng)機(jī)(Deterministic Final Automata 確定有限狀態(tài)自動(dòng)機(jī))和 NFA(Non deterministic Finite Automaton 非確定有限狀態(tài)自動(dòng)機(jī))。

對(duì)比來看,構(gòu)造 DFA 自動(dòng)機(jī)的代價(jià)遠(yuǎn)大于 NFA 自動(dòng)機(jī),但 DFA 自動(dòng)機(jī)的執(zhí)行效率高于 NFA 自動(dòng)機(jī)。

假設(shè)一個(gè)字符串的長度是 n,如果用 DFA 自動(dòng)機(jī)作為正則表達(dá)式引擎,則匹配的時(shí)間復(fù)雜度為 O(n);如果用 NFA 自動(dòng)機(jī)作為正則表達(dá)式引擎,由于 NFA 自動(dòng)機(jī)在匹配過程中存在大量的分支和回溯,假設(shè) NFA 的狀態(tài)數(shù)為 s,則該匹配算法的時(shí)間復(fù)雜度為 O(ns)。

NFA 自動(dòng)機(jī)的優(yōu)勢(shì)是支持更多功能。例如:捕獲 group、環(huán)視、占有優(yōu)先量詞等高級(jí)功能。這些功能都是基于子表達(dá)式獨(dú)立進(jìn)行匹配,因此在編程語言里,使用的正則表達(dá)式庫都是基于 NFA 實(shí)現(xiàn)的。

那么 NFA 自動(dòng)機(jī)到底是怎么進(jìn)行匹配的呢?接下來以下面的例子來進(jìn)行說明: 

  1. text = "aabcab"  
  2. regex = "bc" 

NFA 自動(dòng)機(jī)會(huì)讀取正則表達(dá)式的每一個(gè)字符,拿去和目標(biāo)字符串匹配,匹配成功就換正則表達(dá)式的下一個(gè)字符,反之就繼續(xù)和目標(biāo)字符串的下一個(gè)字符進(jìn)行匹配。

分解一下過程:

1)讀取正則表達(dá)式的第一個(gè)匹配符和字符串的第一個(gè)字符進(jìn)行比較,b 對(duì) a,不匹配;繼續(xù)換字符串的下一個(gè)字符,也就是 a,不匹配;繼續(xù)換下一個(gè),是 b,匹配;

 

2)同理,讀取正則表達(dá)式的第二個(gè)匹配符和字符串的第四個(gè)字符進(jìn)行比較,c 對(duì) c,匹配;繼續(xù)讀取正則表達(dá)式的下一個(gè)字符,然而后面已經(jīng)沒有可匹配的字符了,結(jié)束。

這就是 NFA 自動(dòng)機(jī)的匹配過程,雖然在實(shí)際應(yīng)用中,碰到的正則表達(dá)式都要比這復(fù)雜,但匹配方法是一樣的。

三.NFA自動(dòng)機(jī)的回溯

用 NFA 自動(dòng)機(jī)實(shí)現(xiàn)的比較復(fù)雜的正則表達(dá)式,在匹配過程中經(jīng)常會(huì)引起回溯問題。大量的回溯會(huì)長時(shí)間地占用 CPU,從而帶來系統(tǒng)性能開銷。如下面例子: 

  1. text = "abbc"  
  2. regex = "ab{1,3}c" 

上面例子,匹配目的比較簡單。匹配以 a 開頭,以 c 結(jié)尾,中間有 1-3 個(gè) b 字符的字符串。NFA 自動(dòng)機(jī)對(duì)其解析的過程是這樣的:

1)讀取正則表達(dá)式第一個(gè)匹配符 a 和字符串第一個(gè)字符 a 進(jìn)行比較,a 對(duì) a,匹配;

2)讀取正則表達(dá)式第一個(gè)匹配符 b{1,3} 和字符串的第二個(gè)字符 b 進(jìn)行比較,匹配。但因?yàn)?b{1,3} 表示 1-3 個(gè) b 字符串,NFA 自動(dòng)機(jī)又具有貪婪特性,所以此時(shí)不會(huì)繼續(xù)讀取正則表達(dá)式的下一個(gè)匹配符,而是依舊使用 b{1,3} 和字符串的第三個(gè)字符 b 進(jìn)行比較,結(jié)果還是匹配。

3)繼續(xù)使用 b{1,3} 和字符串的第四個(gè)字符 c 進(jìn)行比較,發(fā)現(xiàn)不匹配了,此時(shí)就會(huì)發(fā)生回溯,已經(jīng)讀取的字符串第四個(gè)字符 c 將被吐出去,指針回到第三個(gè)字符 b 的位置。

4)那么發(fā)生回溯以后,匹配過程怎么繼續(xù)呢?程序會(huì)讀取正則表達(dá)式的下一個(gè)匹配符 c,和字符串中的第四個(gè)字符 c 進(jìn)行比較,結(jié)果匹配,結(jié)束。

四.如何避免回溯問題?

既然回溯會(huì)給系統(tǒng)帶來性能開銷,那我們?nèi)绾螒?yīng)對(duì)呢?如果你有仔細(xì)看上面那個(gè)案例的話,你會(huì)發(fā)現(xiàn) NFA 自動(dòng)機(jī)的貪婪特性就是導(dǎo)火索,這和正則表達(dá)式的匹配模式息息相關(guān)。

1.貪婪模式(Greedy)

顧名思義,就是在數(shù)量匹配中,如果單獨(dú)使用 +、?、*或(min,max)等量詞,正則表達(dá)式會(huì)匹配盡可能多的內(nèi)容。

例如,上面那個(gè)例子: 

  1. text = "abbc"  
  2. regex = "ab{1,3}c" 

就是在貪婪模式下,NFA自動(dòng)機(jī)讀取了最大的匹配范圍,即匹配 3 個(gè) b 字符。匹配發(fā)生了一次失敗,就引起了一次回溯。如果匹配結(jié)果是“abbbc”,就會(huì)匹配成功。 

  1. text = "abbbc"  
  2. regex = "ab{1,3}c" 

2.懶惰模式(Reluctant)

在該模式下,正則表達(dá)式會(huì)盡可能少地重復(fù)匹配字符,如果匹配成功,它會(huì)繼續(xù)匹配剩余的字符串。

例如,上面的例子的字符后面加一個(gè)“?”,就可以開啟懶惰模式。 

  1. text = "abc"  
  2. regex = "ab{1,3}?c" 

匹配結(jié)果是“abc”,該模式下 NFA 自動(dòng)機(jī)首先選擇最小的匹配范圍,即匹配 1 個(gè) b 字符,因此就避免了回溯問題。另外,關(guān)注公眾號(hào)Java技術(shù)棧,在后臺(tái)回復(fù):面試,可以獲取我整理的 Java 系列面試題和答案,非常齊全。

3.獨(dú)占模式(Possessive)

同貪婪模式一樣,獨(dú)占模式一樣會(huì)最大限度地匹配更多內(nèi)容;不同的是,在獨(dú)占模式下,匹配失敗就會(huì)結(jié)束匹配,不會(huì)發(fā)生回溯問題。

還是上面的例子,在字符后面加一個(gè)“+”,就可以開啟獨(dú)占模式。 

  1. text = "abbc"  
  2. regex = "ab{1,3}+c" 

結(jié)果是不匹配,結(jié)束匹配,不會(huì)發(fā)生回溯問題。

所以綜上所述,避免回溯的方法就是:使用懶惰模式或獨(dú)占模式。

前面講述了“Split() 方法使用了正則表達(dá)式實(shí)現(xiàn)了其強(qiáng)大的分割功能,而正則表達(dá)式的性能是非常不穩(wěn)定的,使用不恰當(dāng)會(huì)引起回溯問題。”,比如使用了 split 方法提取域名,并檢查請(qǐng)求參數(shù)是否符合規(guī)定。

split 在匹配分組時(shí)遇到特殊字符產(chǎn)生了大量回溯,解決辦法就是在正則表達(dá)式后加一個(gè)需要匹配的字符和“+”解決了回溯問題:

  1. \\?(([A-Za-z0-9-~_=%]++\\&{0,1})+) 

五.正則表達(dá)式的優(yōu)化

1.少用貪婪模式:多用貪婪模式會(huì)引起回溯問題,可以使用獨(dú)占模式來避免回溯。

2.減少分支選擇:分支選擇類型 “(X|Y|Z)” 的正則表達(dá)式會(huì)降低性能,在開發(fā)的時(shí)候要盡量減少使用。如果一定要用,可以通過以下幾種方式來優(yōu)化:

1)考慮選擇的順序,將比較常用的選擇項(xiàng)放在前面,使他們可以較快地被匹配;

2)可以嘗試提取共用模式,例如,將 “(abcd|abef)” 替換為 “ab(cd|ef)” ,后者匹配速度較快,因?yàn)?NFA 自動(dòng)機(jī)會(huì)嘗試匹配 ab,如果沒有找到,就不會(huì)再嘗試任何選項(xiàng);

3)如果是簡單的分支選擇類型,可以用三次 index 代替 “(X|Y|Z)” ,如果測(cè)試話,你就會(huì)發(fā)現(xiàn)三次 index 的效率要比 “(X|Y|Z)” 高一些。

3.減少捕獲嵌套 :

捕獲組是指把正則表達(dá)式中,子表達(dá)式匹配的內(nèi)容保存到以數(shù)字編號(hào)或顯式命名的數(shù)組中,方便后面引用。一般一個(gè)()就是一個(gè)捕獲組,捕獲組可以進(jìn)行嵌套。

非捕獲組則是指參與匹配卻不進(jìn)行分組編號(hào)的捕獲組,其表達(dá)式一般由(?:exp)組成。

在正則表達(dá)式中,每個(gè)捕獲組都有一個(gè)編號(hào),編號(hào) 0 代表整個(gè)匹配到的內(nèi)容。可以看看下面的例子: 

  1. public static void main(String[] args) {  
  2.         String text = "<input high=\"20\" weight=\"70\">test</input>";  
  3.         String reg = "(<input.*?>)(.*?)(</input>)" 
  4.         Pattern p = Pattern.compile(reg);  
  5.         Matcher m = p.matcher(text);  
  6.         while (m.find()){  
  7.             System.out.println(m.group(0));//整個(gè)匹配到的內(nèi)容  
  8.             System.out.println(m.group(1));//<input.*?>  
  9.             System.out.println(m.group(2));//(.*?)  
  10.             System.out.println(m.group(3));//(</input> 
  11.         }  
  12.     }  
  13. =====運(yùn)行結(jié)果=====  
  14. <input high="20" weight="70">test</input>  
  15. <input high="20" weight="70">  
  16. test  
  17. </input> 

如果你并不需要獲取某一個(gè)分組內(nèi)的文本,那么就使用非捕獲組,例如,使用 “(?:x)” 代替 “(X)” ,例如下面的例子: 

  1. public static void main(String[] args) {  
  2.         String text = "<input high=\"20\" weight=\"70\">test</input>";  
  3.         String reg = "(?:<input.*?>)(.*?)(?:</input>)" 
  4.         Pattern p = Pattern.compile(reg);  
  5.         Matcher m = p.matcher(text);  
  6.         while (m.find()) {  
  7.             System.out.println(m.group(0));//整個(gè)匹配到的內(nèi)容  
  8.             System.out.println(m.group(1));//(.*?)  
  9.         }  
  10.     }  
  11. =====運(yùn)行結(jié)果=====  
  12. <input high="20" weight="70">test</input>  
  13. test  

 

責(zé)任編輯:龐桂玉 來源: Linux公社
相關(guān)推薦

2018-09-27 15:25:08

正則表達(dá)式前端

2020-09-04 09:16:04

Python正則表達(dá)式虛擬機(jī)

2024-09-14 09:18:14

Python正則表達(dá)式

2024-01-04 08:25:03

String表達(dá)式工具

2010-03-25 18:25:36

Python正則表達(dá)式

2011-06-02 12:34:16

正則表達(dá)式

2021-01-27 11:34:19

Python正則表達(dá)式字符串

2022-03-28 06:19:14

正則表達(dá)式開發(fā)

2017-05-12 10:47:45

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

2019-07-17 15:45:47

正則表達(dá)式字符串前端

2009-02-18 09:48:20

正則表達(dá)式Java教程

2009-09-16 18:19:34

正則表達(dá)式組

2022-01-04 11:35:03

Linux Shel正則表達(dá)式Linux

2016-11-10 16:21:22

Java 正則表達(dá)式

2009-09-16 17:15:57

正則表達(dá)式引擎

2023-09-13 08:12:45

2012-04-28 15:22:46

PHP

2009-08-19 14:48:57

正則表達(dá)式性能

2009-02-17 09:10:01

正則表達(dá)式Java優(yōu)化

2012-05-08 13:29:01

VB
點(diǎn)贊
收藏

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

精品视频免费| av资源网在线播放| 精品亚洲国内自在自线福利| 欧美大片免费看| 国精品无码人妻一区二区三区| 91精品美女| 亚洲五码中文字幕| 日韩精品不卡| 亚洲AV无码精品国产| 色欲AV无码精品一区二区久久| 超碰在线资源| 亚洲另类av| jlzzjlzz亚洲女人| 91精品婷婷国产综合久久竹菊| 日韩精品在线观看av| caoporn国产精品免费视频| 国产a级毛片一区| 国产精品久久激情| 国产成人无码一区二区三区在线 | 欧美成熟毛茸茸复古| 国产精品久久综合青草亚洲AV| 午夜在线视频一区二区区别| 美女撒尿一区二区三区| 免费成人深夜天涯网站| 任我爽精品视频在线播放| 91精品欧美久久久久久动漫| 国产视频在线视频| 免费看男女www网站入口在线| 国产精品色哟哟| 久久精品国产美女| 欧美性猛交 xxxx| 男人的天堂亚洲| 97视频在线看| 日本a在线观看| 中文字幕av亚洲精品一部二部| 在线视频欧美日韩精品| 亚洲精品乱码久久久久久久久久久久 | 99香蕉国产精品偷在线观看 | 日韩综合在线观看| 在线综合亚洲| 97在线视频免费| 91精品久久久久久蜜桃| 精品成在人线av无码免费看| 精品美女在线观看视频在线观看 | 久久99九九99精品| 国产精品xxx视频| 精品久久久久久久久久久久久久久久| 国产欧美日本| 91av免费观看91av精品在线| 亚洲精品77777| 亚洲精品日韩久久| 国产69精品久久久久99| 国产精品a成v人在线播放| 午夜激情一区| 久久免费视频在线观看| 日韩欧美国产亚洲| 亚洲精品麻豆| 日本一欧美一欧美一亚洲视频| 日韩电影在线观看一区二区| 可以看av的网站久久看| 国产精品精品久久久| 在线免费观看中文字幕| 狠狠色狠狠色综合系列| 亚洲字幕一区二区| 亚洲av无码一区二区乱子伦| 波多野结衣中文一区| 久久久久久国产精品一区| 免费播放片a高清在线观看| 国产日韩欧美综合在线| 国产又爽又黄ai换脸| av大全在线| 无码av中文一区二区三区桃花岛| 黑人糟蹋人妻hd中文字幕| 欧洲亚洲两性| 欧美丰满美乳xxx高潮www| 免费观看黄网站| 欧美挤奶吃奶水xxxxx| 亚洲性视频网站| 在线观看黄网址| 亚洲三级免费| 国产精品免费视频xxxx| 99精品免费观看| 99在线热播精品免费| 日本在线播放不卡| av小次郎在线| 精品久久在线播放| 久久久久xxxx| 国产亚洲成av人片在线观黄桃| 亚洲女人被黑人巨大进入| 精品国产乱码久久久久久久久| 午夜免费福利视频在线观看| 亚洲高清国产拍精品26u| 精品国产免费久久| 午夜时刻免费入口| 欧美1级日本1级| 日本高清视频一区| www.久久久久久| 久久伊人中文字幕| 视色,视色影院,视色影库,视色网 日韩精品福利片午夜免费观看 | 一区二区三区自拍视频| 国产亚洲一区二区在线| 久久精品一级片| 免费欧美在线视频| 精品乱码一区| v片在线观看| 日本精品视频一区二区三区| 极品人妻一区二区| blacked蜜桃精品一区| 九九热在线精品视频| 波多野结衣激情视频| 粉嫩av亚洲一区二区图片| 先锋影音日韩| 漫画在线观看av| 日韩三级av在线播放| 亚洲一级黄色录像| 亚洲综合精品| 国产一区二区高清不卡| 国产视频中文字幕在线观看| 在线欧美一区二区| a天堂视频在线观看| 欧美私人啪啪vps| 91精品国产综合久久香蕉最新版 | 亚洲乱亚洲乱妇| 亚洲福利一区二区三区| 亚洲一区二区三区三州| 日韩88av| 国产精品久久久久久av福利软件| 亚洲区小说区图片区| 一区二区成人在线视频| 成人亚洲免费视频| 午夜精品一区二区三区国产 | 欧美日韩aaaa| 国产精品怡红院| 成人免费在线视频观看| www.日本一区| gogogo高清在线观看一区二区| 日韩av第一页| 精品亚洲综合| 欧美亚洲综合久久| 国产亚洲精品熟女国产成人| 日一区二区三区| 日本精品一区二区三区视频 | 97se在线视频| 欧美高清另类hdvideosexjaⅴ| 91精品国产综合久久久蜜臀图片| 国产亚洲精品久久久久久豆腐| 美女视频网站久久| 亚洲人成网站在线播放2019| 国产精品原创视频| 中文字幕自拍vr一区二区三区| 亚洲xxx在线观看| av免费在线观| 777久久久精品| 九九精品视频免费| 韩国一区二区视频| 无码人妻精品一区二区三区99v| 北岛玲精品视频在线观看| 久久精品中文字幕免费mv| 国产精品久久久久久久免费| 中文字幕亚洲不卡| 亚洲一区二区福利视频| 欧美在线亚洲综合一区| 高清视频一区二区三区| 国产伦久视频在线观看| 亚洲欧洲日产国码av系列天堂| 免费又黄又爽又猛大片午夜| 中文天堂在线一区| 在线免费观看av网| 国产精品www.| 玖玖玖精品中文字幕| 电影天堂国产精品| 久久精品91久久久久久再现| 好吊视频一区二区三区| 欧美丝袜美女中出在线| 免费看91的网站| 狠狠网亚洲精品| 日韩av中文字幕第一页| 久久99国产精一区二区三区| 国产精品视频专区| 婷婷色在线资源| 亚洲美女自拍视频| 国产一区二区三区视频免费观看| 亚洲国产视频直播| av网站免费在线看| 国产一区二区伦理片| 国产淫片免费看| 国产精品久久久久蜜臀| 精品乱码一区| 9999精品| 欧美在线视频在线播放完整版免费观看 | 麻豆高清免费国产一区| 波多野结衣av一区二区全免费观看| 一本久久青青| 亚洲va久久久噜噜噜| av电影一区| 超碰97人人做人人爱少妇| 天天干视频在线| 欧美影片第一页| 亚洲精品视频在线观看免费视频| 中文字幕欧美国产| 精品人妻二区中文字幕| 七七婷婷婷婷精品国产| 久久久久免费看黄a片app| 日本在线电影一区二区三区| 精品一区二区国产| 日本高清精品| 国产精品无码专区在线观看| 日本不良网站在线观看| 操91在线视频| www在线免费观看| 国产视频丨精品|在线观看| 国产av无码专区亚洲av| 色88888久久久久久影院野外| 国产在线观看成人| 最新久久zyz资源站| 99久久久无码国产精品衣服| 成人午夜激情影院| 亚洲成人手机在线观看| 日韩av电影一区| 欧美日韩黄色一级片| 欧美私人啪啪vps| 国产四区在线观看| 日韩国产一区二区| 欧美国产一区二区在线| 老司机在线精品视频| 999视频在线免费观看| 欧美成人免费全部网站| 国产精品www| 欧美二三四区| 欧美在线精品免播放器视频| www555久久| 色综合天天狠天天透天天伊人| 日本激情在线观看| 在线观看日韩av| 激情小视频在线| 亚洲欧美第一页| 日韩精品福利| 亚洲精品在线91| 免费毛片在线| 一区二区欧美在线| 国产福利第一视频在线播放| 亚洲开心激情网| 日本一二三区在线视频| 日韩电影中文字幕在线| 午夜在线视频免费| 国产丝袜一区二区三区免费视频| 深夜影院在线观看| 亚洲欧美另类在线观看| 国产最新视频在线观看| 亚洲性生活视频| 日本高清在线观看wwwww色| 综合网日日天干夜夜久久| 色多多视频在线观看| 日韩专区在线观看| av网址在线播放| 久久久久久成人| 中文字幕不卡三区视频| 国产成人精品一区二区在线| 99久久婷婷国产综合精品首页| 国产欧亚日韩视频| 另类视频一区二区三区| 国产精品一区二| 亚洲成a人片77777在线播放| 日韩电影免费观看在| 99精品全国免费观看视频软件| 青青草免费在线视频观看| 影音先锋中文字幕一区| 无码人妻丰满熟妇区五十路百度| 日韩黄色片在线观看| 国产乱女淫av麻豆国产| 成人综合激情网| 日本二区在线观看| 亚洲男帅同性gay1069| 国产午夜久久久| 色先锋aa成人| 国产丰满果冻videossex| 精品久久久久久久久久久院品网 | 日本黄色一区二区| 欧美激情黑白配| 欧美性极品少妇| 99久久免费国产精精品| 亚洲精品大尺度| 国产视频三级在线观看播放| 久久资源免费视频| 亚洲优女在线| 国产日韩欧美电影在线观看| japanese色系久久精品| 欧美日韩精品免费观看视一区二区| 91视频一区| 亚洲熟妇无码另类久久久| 日本亚洲免费观看| 无码人妻丰满熟妇啪啪网站| 日本一区二区三区视频视频| 国产在线观看成人| 欧美日韩国产影片| 午夜福利理论片在线观看| 久久天天躁日日躁| 欧美xx视频| 成人一区二区在线| 久久激情电影| 又粗又黑又大的吊av| 国产一区二区三区黄视频 | 欧美日韩成人综合天天影院| 日本激情视频网站| 久久婷婷国产麻豆91天堂| 午夜精品成人av| 国产伦一区二区三区色一情| 天天影视天天精品| 成人性视频欧美一区二区三区| 国产99久久久国产精品免费看 | 成人免费视频a| 国产一区二区三区不卡视频网站| 97在线国产视频| 久久99精品国产麻豆婷婷洗澡| 搡老熟女老女人一区二区| 亚洲精品国产a久久久久久| 中文天堂在线播放| 精品网站999www| 成人黄色动漫| 国产成人一区二区三区免费看| 久久久久久久久久久9不雅视频| 国产三级日本三级在线播放| 91片黄在线观看| 久久精品国产亚洲av麻豆色欲| 欧美一卡二卡在线观看| 日本中文字幕在线2020| 国产精品色视频| 国产成人1区| 久久人妻精品白浆国产| www.激情成人| 久久中文字幕在线观看| 日韩一区二区精品葵司在线| 黄色在线论坛| 成人精品视频99在线观看免费| 色777狠狠狠综合伊人| 天天视频天天爽| 亚洲国产精品二十页| 国产成人麻豆免费观看| 亚洲人av在线影院| 精品免费av在线| 日韩精品一线二线三线| 毛片基地黄久久久久久天堂| 青青青手机在线视频| 欧美喷水一区二区| 国产理论在线观看| 114国产精品久久免费观看| 午夜国产精品视频| 国产人妻黑人一区二区三区| 精品久久久中文| 九一国产在线| 国产精自产拍久久久久久蜜| 亚洲二区三区不卡| 亚洲911精品成人18网站| 亚洲一区成人在线| 亚洲色图 校园春色| 日韩美女视频中文字幕| 精品久久久久久久| 国内外成人免费在线视频| 亚洲欧美经典视频| 后进极品白嫩翘臀在线视频| 91高潮精品免费porn| 欧洲激情综合| www.亚洲自拍| 婷婷国产v国产偷v亚洲高清| 国产资源在线看| 成人亚洲欧美一区二区三区| 亚洲电影在线| 国产视频三区四区| 日韩欧美国产麻豆| 国产在线看片免费视频在线观看| 欧美日韩精品不卡| 国产呦萝稀缺另类资源| 国产一级做a爰片在线看免费| 亚洲午夜久久久影院| **国产精品| 免费观看国产精品视频| 欧美激情一区不卡| 韩国av永久免费| 国产美女久久久| 中文高清一区| 日本一级片免费| 日韩激情av在线播放| 中文字幕日本一区| 国产精品333| 亚洲色图在线视频| 日韩av成人| 亚洲自拍av在线| 三级亚洲高清视频| 国产一级大片在线观看| 国产亚洲欧洲在线| 林ゆな中文字幕一区二区| 污色网站在线观看| 五月开心婷婷久久| 老司机av在线免费看| 欧美18视频| 粉嫩aⅴ一区二区三区四区五区| 亚洲天堂777| 91高潮精品免费porn| 欧美日韩亚洲一区二区三区在线| 草草影院第一页|