亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學(xué)院 > 編程設(shè)計 > 正文

Emeditor怎么使用 Emeditor正則表達(dá)式大全

2020-07-14 13:34:21
字體:
供稿:網(wǎng)友

經(jīng)常用到EmEditor來編輯純文本文檔。最近接觸了正則表達(dá)式,感受到其功能非常強大。
正則表達(dá)式實在包含的內(nèi)容太多, 僅僅用一篇文章來涵蓋是沒可能的了, 所以我只是簡要的做些介紹和基本的模式應(yīng)用舉例. 

正則表達(dá)式, 英文 Regular expression, 簡寫Regexes或Regex. 

應(yīng)用概述: 提供與預(yù)期的搜索結(jié)果匹配的確切文本來進(jìn)行字符串的搜索和替換操作, 這種技術(shù)不僅僅用于開發(fā)領(lǐng)域, 更被集成到一些常見的文本擴(kuò)展編輯器, 如UltraEdit, Emeditor等. 歷史上第一個實用應(yīng)用程序是Unix 中的qed 編輯器。 

舉一個簡單的類比: 我們對DOS中的通配符"*"和"?"應(yīng)該很熟悉, 如命令"dir *.exe" 將列出所有后綴名為exe的文件名. 正則表達(dá)式提供的方法與其類似, 而且遠(yuǎn)比通配符強大的多. 

從某種意義上說, 正則表達(dá)式是一種語言, 通過及其簡短的一行代碼即可以高效, 精確的描述要匹配的復(fù)雜文本, 當(dāng)然, 它最大的優(yōu)點也是他最大的缺點: 語法復(fù)雜, 創(chuàng)建困難. (熟悉之后就可以忽略后半句了 :p) 

主要應(yīng)用: 
數(shù)據(jù)驗證; 這是正則表達(dá)式在開發(fā)中最常見的應(yīng)用, 通過測試字符串內(nèi)的模式。來驗證輸入的字符串是否為郵政編碼, 電話號碼, 電子郵件地址, 信用卡號碼等等。 
搜索和替換文本; 用正則表達(dá)式來搜索文檔中的特定文本塊, 根據(jù)需要用其他指定的文本塊進(jìn)行替換。這也是文本編輯中的一個常見應(yīng)用, 如將網(wǎng)頁中的HTML代碼轉(zhuǎn)化為UBB代碼. 

1. 啟用正則表達(dá)式 
菜單: Search - Find (Replace) - 選中 Use Regular Expressions 

2. Emeditor 正則語法 
正則表達(dá)式是普通字符和元字符組合的一種模式. 它的結(jié)構(gòu)與算術(shù)表達(dá)式的結(jié)構(gòu)類似, 各種元字符和運算符可以將小的表達(dá)式組合起來,創(chuàng)建大的表達(dá)式。通過在一對分隔符之間放置表達(dá)式模式的各種組件,就可以構(gòu)建正則表達(dá)式。 

2.1 普通字符 
普通字符是指除了 ".", "*", "?", "+", "(", ")", "{", "}", "[", "]", "^", "$" 和 "/" 這些特殊字符之外的所有其他字符. 而這些特殊字符也可以通過前面加上"/"前綴而變?yōu)槠胀ㄗ址? 比如, 搜索"CCF"即為在文本中匹配所有的"CCF"字符串, 搜索"/[CCF/]"則是在文本中匹配所有的"[CCF]"字符串. 
簡而言之, 普通字符即為只匹配自身的字符. 
2.2 元字符 
元字符不匹配其自身,它用特殊方式來解析從而實現(xiàn)更多的邏輯功能。正則表達(dá)式通過元字符在模式中包含選擇和循環(huán) 
2.2.1 特殊字符 

3. 匹配除換行符 /n 之外的任何單個字符。 
( ) 分組捕獲(子表達(dá)式)的開始和結(jié)束。可以捕獲子表達(dá)式以供以后使用。 
[ ] 中括號表達(dá)式的開始。 
中括號表達(dá)式是在方括號內(nèi)包含一個或多個字符構(gòu)成的列表的表達(dá)式。普通字符在中括號內(nèi)表示本身,大多數(shù)特殊字符在中括號表達(dá)式內(nèi)出現(xiàn)時失去它們的意義。除了轉(zhuǎn)義字符'/', (要包含'/', 需要使用'/') 如: 正則表達(dá)式 No [1234] 匹配 No 1, No 2, No 3 和 No4. 如果想在中括號中使用一個范圍作為列表來匹配字符,可以用連字符 '-' 將范圍中的開始字符和結(jié)束字符分開。單個字符的字符值確定范圍內(nèi)的相對順序。如: 正則表達(dá)式 No [1-4] = No [1234] 
注意 1. 開始值的Unicode值必須在結(jié)束值Unicode值的前面。 
注意 2. [/-]匹配連字符'-', 放在中括號列表的開始或結(jié)尾也可起到同樣的效果, 如 [-c-f] 匹配 c 至 f 的字符和連字符 

如果需要匹配不屬于列表或范圍內(nèi)的任何字符,可以在列表開頭加上'^'前綴。如: 正則表達(dá)式 No [^1-4] 匹配 No 5 和更大的編號. 

中括號表達(dá)式還可進(jìn)行組合, 如 [A-Za-z0-9] 匹配A-Z, a-z, 0-9 的字符 

/ 將下一字符標(biāo)記為特殊字符、文本、反向引用或八進(jìn)制轉(zhuǎn)義符。例如, 
字符 n 匹配字符 n 
/n 匹配換行符 
序列 / 匹配 / 
序列 /( 匹配 ( 
| 替換字符, 對|左右的兩個項分別匹配進(jìn)行選擇?;蛘哒f, 就是邏輯的OR的概念 
{ } 標(biāo)記限定符表達(dá)式的開始。 
(數(shù)量)限定字符 
限定字符能夠指定正則表達(dá)式的某個部分必須出現(xiàn)的次數(shù) 
* 零次或多次匹配前面的字符或子表達(dá)式。如,c*f 可以匹配 f 和 ccf。* = {0,} 
+ 一次或多次匹配前面的字符或子表達(dá)式。如,c+f 可以匹配 cf 和 ccf,但不匹配 f。+ = {1,} 
? 零次或一次匹配前面的字符或子表達(dá)式。如,cc?f 可以匹配 cf 或 ccf。? = {0,1} 
{n} n 是非負(fù)整數(shù)。正好匹配 n 次。如,c{2}f 可以匹配 ccf。 
{n,} n 是非負(fù)整數(shù)。至少匹配 n 次。如,c{2,}f 不匹配 cf,而可以匹配 ccccccf。c{1,} = c+。c{0,} = c* 
{n,m} m 和 n 是非負(fù)整數(shù),其中 n <= m。至少匹配 n 次,至多匹配 m 次。如,c{1,3} 可以匹配 ccf 中的cc。c{0,1} 等效于 c?。 

2.2.2 控制字符 
/a Bell 字符。= 0x07 
/f 換頁符匹配。= 0x0C 
/n 換行符匹配。= 0x0A 
/r 匹配一個回車符。= 0x0D 
/t 制表符匹配。= 0x09 
/v 垂直制表符匹配。= 0x0B 
/e ASCII 換碼字符。= 0x1B 
{post.abstract}dd 八進(jìn)制換碼字符, dd代表八進(jìn)制數(shù)字。 
/xXXXX或/x{XXXX} 4位十六進(jìn)制Unicode字符, XXXX代表十六進(jìn)制數(shù)字。 
/cZ Z-'@' 控制字符Control-Z, Z為大于等與"@"的ASCII字符 
2.2.3 換碼字符 
/w 任一單詞字符, 如A-Z, a-z, 0-9, _等, 如 /w/w/w可以匹配 U_4 但不匹配 %^e 
/W 任一非單詞字符, 如 /W/W 可以匹配 *& 但不匹配 7# 
/s 任一空白字符,包括空格、制表符、換頁符、回車符和垂直制表符。= [ /f/n/r/t/v] 
/S 任一非空白字符. = [^ /f/n/r/t/v] 
/d 0-9的任一數(shù)字字符, 如 /d/d可以匹配 54 但不匹配 a4 
/D 任一非數(shù)字字符. 如 /D/D可以匹配 a4 但不匹配 54 
/l a-z 之間的任一小寫字符, 如 /l/l/l可以匹配 ccf 但不匹配 ccF 
/L 任一非小寫字符, 如 /L/L/L可以匹配 CCF 但不匹配 cCF 
/u a-z 之間的任一大寫字符, 如 /u/u/u可以匹配 CCF 但不匹配 CCf 
/U 任一非大寫字符, 如 /U/U/U可以匹配 ccf 但不匹配 ccF 
/C 任一字符, = '.' 
/Q 前置引號符, 其后的任意字符均被認(rèn)為普通字符直至出現(xiàn)后置引號符/E. 同時匹配單引號和雙引號 
/E 后置引號符 

2.2.4 轉(zhuǎn)義字符串 
表示為[:classname:], 如"[[:space:]]"表示所有的空格字符 

alnum 任一單詞字符和數(shù)字字符. = [/w/d] 
alpha 任何一個單詞字符, 如A-Z, a-z, 0-9 
blank 任一空白字符,包括空格、制表符、換頁符、回車符和垂直制表符。= [ /f/n/r/t/v] = /s 
cntrl 任一控制字符. 
digit 0-9的任一數(shù)字字符, = /d 
graph 任一圖形字符. 
lower a-z 之間的任一小寫字符 =/l 
print 任一可打印字符 = '.' = /C 
punct 任一標(biāo)點符號 
space 任一空格字符 
upper a-z 之間的任一大寫字符 = /u 
xdigit 4位十六進(jìn)制Unicode字符, = /xXXXX 
word 任何一個單詞字符, 如A-Z, a-z, 0-9, _等, = /w 
unicode 任何一個ASCII值大于255的字符 

2.2.5 定位字符 
定位字符可以把正則表達(dá)式固定到行首或行尾。在Perl正則全集中還能使正則表達(dá)式出現(xiàn)在一個單詞內(nèi)、在一個單詞的開頭或者一個單詞的結(jié)尾, emeditor只是一個子集, 不包含這個功能。 
^ 匹配輸入字符串開始的位置。如果設(shè)置customize中的"regular expressions can match new line characters",那么 ^ 還匹配 /n 或 /r 后面的位置。 但在中括號表達(dá)式中使用的情況除外,在那種情況下它對字符集求反。 
$ 匹配輸入字符串結(jié)尾的位置。如果設(shè)置customize中的"regular expressions can match new line characters",那么 $ 還匹配 /n 或 /r 前面的位置。 
3. 分組捕獲和替換 

分組通常用來捕獲特定模式的一組文本, 并用與之后的替換操作, 這也就是將分組和替換結(jié)合起來講解的原因. 
最基本的分組構(gòu)造方式就是(),在左右括號中括起來的部分,就是一個分組;在正則全集中還有如(?<name> )的命名分組方式,這種方式組合了模式在就是對分組的部分進(jìn)行了命名,這樣就可以通過該組的命名來獲取信息, 但這種方式在emeditor中不被支持. 以下分別來介紹各種不同的分組: 

() 組捕獲. 這種分組對模式在括號內(nèi)所捕獲的字符進(jìn)行組合, 并且每個分組捕獲的匹配結(jié)果都將保存為一個實體以備其后的操作所引用. 甚至在正則全集中還可對前面的分組進(jìn)行反向引用(這是題外話, emeditor不支持). 舉例說明: 
源文本: 

代碼: 

-------------------------------------------------------------------------------- 
site status- online members: 65, online guests: 12 
-------------------------------------------------------------------------------- 

使用正則表達(dá)式: 

代碼: 

-------------------------------------------------------------------------------- 
(members|guests): /d+ 
-------------------------------------------------------------------------------- 

括號中有兩個可能的匹配: members 和 guests, 只需要匹配其中任意一個; 其后是冒號和一個空格, 最后匹配至少一個數(shù)字. 匹配模式結(jié)果如下: 


代碼: 

-------------------------------------------------------------------------------- 
members: 65 
guests: 12 
-------------------------------------------------------------------------------- 

其中members和guests在兩次匹配中被捕捉, 可以在隨后的操作中引用. 


(?:) 非組捕獲. 這種分組僅僅對模式在括號內(nèi)所匹配的字符進(jìn)行組合, 模式所匹配的字符將不會作為一個組來捕獲. 雖然他也同樣成為最終的匹配結(jié)果的一部分, 但無法為其后的操作所引用. 同樣以上例繼續(xù): 
使用正則表達(dá)式: 


代碼: 


-------------------------------------------------------------------------------- 
(?:members|guests): /d+ 
-------------------------------------------------------------------------------- 

匹配模式結(jié)果同樣為: 


代碼: 

-------------------------------------------------------------------------------- 
members: 65 
guests: 12 
-------------------------------------------------------------------------------- 

但是members和guests僅僅在兩次匹配中被分組, 并不被捕獲, 也不可以在隨后的操作中引用. 
使用非捕獲組有其原因和場合. 其一, 從效率上說, 捕獲一個分組需要消耗額外的資源和處理時間, 所以不應(yīng)該捕獲不需要使用的數(shù)據(jù). 其二, 對模式中有多個捕獲組的情況, 對不需要處理的分組進(jìn)行捕獲只會對分組信息造成混亂. 其三, 避免不需要貪婪匹配的場合發(fā)生貪婪匹配, 貪婪匹配是正則引擎的一個重要特性, 要說清楚其機(jī)理可能還需要另外開一個專題了. 對這一點, 還以上例說明一下: 
使用不帶分組的正則表達(dá)式: 

代碼: 

-------------------------------------------------------------------------------- 
members|guests: /d+ 
-------------------------------------------------------------------------------- 

匹配模式為: 


代碼: 

-------------------------------------------------------------------------------- 
members 
guests: 12 
-------------------------------------------------------------------------------- 


這個正則表達(dá)式的問題在于, 他匹配的是"members" 或 "guests: /d+", 這是模式中貪婪"消費"字符引起的. 而通過增加括號進(jìn)行分組, 使正則引擎將兩個匹配選項作為一個組處理, 從而正確匹配其中的一個匹配項. 


(?=) 正聲明組, 非捕獲. 此分組中的模式必須出現(xiàn)在聲明的右側(cè), 并且, 這個模式不構(gòu)成匹配結(jié)果的一部分. 舉例: 
源文本: 

代碼: 

-------------------------------------------------------------------------------- 
site status- online members: 65, online guests: 12 
-------------------------------------------------------------------------------- 


使用正則表達(dá)式: 


代碼: 


-------------------------------------------------------------------------------- 
/S+(?=/s/d+) 
-------------------------------------------------------------------------------- 


此模式中規(guī)定了/s/d+必須出現(xiàn)在/S+聲明的右側(cè). 也就是說, 在至少一個非空格字符(聲明)的右側(cè)必須出現(xiàn)一個空格字符和至少一個數(shù)字, 而且只有這個聲明構(gòu)成匹配結(jié)果. 匹配模式結(jié)果如下: 


代碼: 


-------------------------------------------------------------------------------- 
members: 
guests: 
-------------------------------------------------------------------------------- 


這兩次匹配中不被捕捉. 


(?!) 負(fù)聲明組, 非捕獲. 此分組中的模式不得出現(xiàn)在聲明的右側(cè), 并且, 這個模式不構(gòu)成匹配結(jié)果的一部分. 還是用上面的例子: 
使用正則表達(dá)式: 


代碼: 


-------------------------------------------------------------------------------- 
/d{2}(?!,) 
-------------------------------------------------------------------------------- 


此模式中規(guī)定了","不得出現(xiàn)在/d{2}聲明的右側(cè). 也就是說, 在連續(xù)兩個數(shù)字(聲明)的右側(cè)不得出現(xiàn)逗號才能被匹配. 匹配模式結(jié)果如下: 


代碼: 


-------------------------------------------------------------------------------- 
12 
-------------------------------------------------------------------------------- 


這兩次匹配中不被捕捉. 
嚴(yán)格的說, 后面兩個分組不能稱之為分組, 他們只是模式聲明, 他們不能成為匹配結(jié)果, 也不能被捕獲. 在正則全集中, 還有反向聲明分組(?<=)(?<!)和非回溯分組(?>), 在emeditor中不被支持. 


說到括號的功能, 本來正則中的一個重要指令-條件指令和分組內(nèi)聯(lián)設(shè)定是不得不說的, 可惜的是... emeditor也同樣不支持~~~~ 


在前面的例子中一直提到匹配之后的操作, 而這個進(jìn)一步的操作最常見的就是替換. 先繼續(xù)上面的例子: 
源文本: 


代碼: 


-------------------------------------------------------------------------------- 
site status- online members: 65, online guests: 12 
-------------------------------------------------------------------------------- 


使用搜索正則表達(dá)式: 


代碼: 


-------------------------------------------------------------------------------- 
(members|guests) 
-------------------------------------------------------------------------------- 


和替換正則表達(dá)式: 


代碼: 


-------------------------------------------------------------------------------- 
ccf- 
-------------------------------------------------------------------------------- 


匹配模式結(jié)果如下: 


代碼: 


-------------------------------------------------------------------------------- 
members 
guests 
-------------------------------------------------------------------------------- 


替換后的文本為: 


代碼: 


-------------------------------------------------------------------------------- 
site status- online ccf-members: 65, online ccf-guests: 12 
-------------------------------------------------------------------------------- 


其中members和guests在兩次匹配中被捕捉, 在隨后被引用, 并添加ccf-前綴后替換源文本中的匹配字符. 
在匹配模式中的分組匹配結(jié)果將按前后順序被正則引擎分別賦予內(nèi)部組號, 在替換操作中就可以用/加上這個組號來引用相應(yīng)的匹配結(jié)果. 繼續(xù)上例: 
使用搜索正則表達(dá)式: 


代碼: 


-------------------------------------------------------------------------------- 
(members|guests): (/d{2}) 
-------------------------------------------------------------------------------- 


和替換正則表達(dá)式: 


代碼: 


-------------------------------------------------------------------------------- 
ccf- = 
-------------------------------------------------------------------------------- 


匹配模式結(jié)果如下: 


代碼: 


-------------------------------------------------------------------------------- 
members: 65 
guests: 12 
-------------------------------------------------------------------------------- 


替換后的文本為: 


代碼: 


-------------------------------------------------------------------------------- 
site status- online ccf-members = 65, online ccf-guests = 12 
-------------------------------------------------------------------------------- 




在emeditor的正則子集中增加了一個特殊的引用: {post.abstract} , {post.abstract} 將引用上次的匹配結(jié)果, 繼續(xù)把: 
使用搜索正則表達(dá)式: 


代碼: 


-------------------------------------------------------------------------------- 
/d{2} 
-------------------------------------------------------------------------------- 


和替換正則表達(dá)式: 


代碼: 


-------------------------------------------------------------------------------- 
*{post.abstract}* 
-------------------------------------------------------------------------------- 


匹配模式結(jié)果如下: 


代碼: 


-------------------------------------------------------------------------------- 
65 
12 
-------------------------------------------------------------------------------- 


替換后的文本為: 


代碼: 


-------------------------------------------------------------------------------- 
site status- online ccf-members: *65*, online ccf-guests: *12* 
-------------------------------------------------------------------------------- 

作為一個編輯軟件, emeditor的正則子集中增加了一些替換修飾符: 

/U 大寫修飾. 將其后的所有的字符替換為大寫 
/L 小寫修飾. 將其后的所有的字符替換為小寫 
/H 半角修飾. 將其后的所有的字符替換為半角字符. 寫到這里, 不得不稱許一下emeditor對中文的良好支持, 這個/H至少我是很常用的, 不喜歡看到文本里面都是些123abc之類的全角字符... 
/F 全角修飾. 將其后的所有的字符替換為全角字符 
/E 關(guān)閉之前的/U, /L, /H, /F修飾. 
^[  /t]*/n 
這個正則表達(dá)式代表所有的空行,指含有零個或零個以上空格或制表符、以換行符結(jié)尾、不含其它字符的行。 

(^|(?<=中國)).*?(?=中國|$) 
用正則表達(dá)式匹配特定字符串外的所有字符。指除“中國”外的所有其它字符,類似于反選功能。 

^[  /t]+ 
查找以上字符,并替換為空,可刪除行首空白(包括全半角空格和制表符)。 

[  /t]+$ 
查找以上字符,并替換為空,可刪除行末空白(包括全半角空格和制表符)。 


^[  /t]+|[  /t]+$ 
查找以上正則表達(dá)式,并替換為空,可刪除行首和行末所有空白(包括全半角空格和制表符)。

匹配中文字符的正則表達(dá)式: [/u4e00-/u9fa5] 
評注:匹配中文還真是個頭疼的事,有了這個表達(dá)式就好辦了 

匹配雙字節(jié)字符(包括漢字在內(nèi)):[^/x00-/xff] 
評注:可以用來計算字符串的長度(一個雙字節(jié)字符長度計2,ASCII字符計1) 

匹配空白行的正則表達(dá)式:/n/s*/r 
評注:可以用來刪除空白行 

匹配HTML標(biāo)記的正則表達(dá)式:< (/S*?)[^>]*>.*?|< .*? /> 
評注:網(wǎng)上流傳的版本太糟糕,上面這個也僅僅能匹配部分,對于復(fù)雜的嵌套標(biāo)記依舊無能為力 


匹配首尾空白字符的正則表達(dá)式:^/s*|/s*$ 
評注:可以用來刪除行首行尾的空白字符(包括空格、制表符、換頁符等等),非常有用的表達(dá)式 

匹配Email地址的正則表達(dá)式:/w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)* 
評注:表單驗證時很實用 

匹配網(wǎng)址URL的正則表達(dá)式:[a-zA-z]+://[^/s]* 
評注:網(wǎng)上流傳的版本功能很有限,上面這個基本可以滿足需求 

匹配帳號是否合法(字母開頭,允許5-16字節(jié),允許字母數(shù)字下劃線):^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 
評注:表單驗證時很實用 

匹配國內(nèi)電話號碼:/d{3}-/d{8}|/d{4}-/d{7} 
評注:匹配形式如 0511-4405222 或 021-87888822 

匹配騰訊QQ號:[1-9][0-9]{4,} 
評注:騰訊QQ號從10000開始 


匹配中國郵政編碼:[1-9]/d{5}(?!/d) 
評注:中國郵政編碼為6位數(shù)字 

匹配身份證:/d{15}|/d{18} 
評注:中國的身份證為15位或18位 

匹配ip地址:/d+/./d+/./d+/./d+ 
評注:提取ip地址時有用 


匹配特定數(shù)字: 
^[1-9]/d*$    //匹配正整數(shù) 
^-[1-9]/d*$   //匹配負(fù)整數(shù) 
^-?[1-9]/d*$   //匹配整數(shù) 
^[1-9]/d*|0$  //匹配非負(fù)整數(shù)(正整數(shù) + 0) 
^-[1-9]/d*|0$   //匹配非正整數(shù)(負(fù)整數(shù) + 0) 
^[1-9]/d*/./d*|0/./d*[1-9]/d*$   //匹配正浮點數(shù) 
^-([1-9]/d*/./d*|0/./d*[1-9]/d*)$  //匹配負(fù)浮點數(shù) 
^-?([1-9]/d*/./d*|0/./d*[1-9]/d*|0?/.0+|0)$  //匹配浮點數(shù) 
^[1-9]/d*/./d*|0/./d*[1-9]/d*|0?/.0+|0$   //匹配非負(fù)浮點數(shù)(正浮點數(shù) + 0) 
^(-([1-9]/d*/./d*|0/./d*[1-9]/d*))|0?/.0+|0$  //匹配非正浮點數(shù)(負(fù)浮點數(shù) + 0) 
評注:處理大量數(shù)據(jù)時有用,具體應(yīng)用時注意修正 

匹配特定字符串: 
^[A-Za-z]+$  //匹配由26個英文字母組成的字符串 
^[A-Z]+$  //匹配由26個英文字母的大寫組成的字符串 
^[a-z]+$  //匹配由26個英文字母的小寫組成的字符串 
^[A-Za-z0-9]+$  //匹配由數(shù)字和26個英文字母組成的字符串 
^/w+$  //匹配由數(shù)字、26個英文字母或者下劃線組成的字符串 
評注:最基本也是最常用的一些表達(dá)式 

^.*John.*$ 
匹配包括“John”的整行。 

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
成人美女视频在线观看18| 污免费在线观看| 精品一区二区三区久久久| 欧美一级二级三级| 麻豆国产尤物av尤物在线观看| 欧美一区久久久| 亚洲午夜精品17c| 亚洲a一区二区三区| 一区二区三区日韩欧美| 无码人妻一区二区三区在线| 99久久精品免费看| 偷拍盗摄高潮叫床对白清晰| 国产成人高潮免费观看精品| 亚洲欧洲国产视频| 国产女主播在线直播| 成人综合一区| 免费国产麻豆传| 欧美又粗又硬又大久久久| 色综合久久久| 国产一区二区精品久久99| 国产精品久久久网站| 国产视频精品视频| 久久久免费在线观看| 日韩高清专区| 日韩免费毛片| 91久久影院| 国产精品传媒入口麻豆| 日韩在线观看中文字幕| 日韩av网站电影| heyzo国产| 亚洲日韩色图| 亚洲欧美激情网| 久久久久毛片免费观看| 国产成人综合在线播放| 日本中文字幕二区| 国产高清一区二区三区视频| 日韩欧美亚洲在线| 色哟哟日韩精品| 爱草tv视频在线观看992| 青青草激情视频| 日本高清在线观看| 99久久99久久久精品棕色圆| 色无极影院亚洲| 国产伦精品一区二区三区视频痴汉| 日本动漫理论片在线观看网站| 精品久久久久一区| 中文字幕精品无| 爱爱网站免费| 国产精品swag| 午夜视频国产| 亚洲大胆在线| 中文在线字幕av| 国产蜜臀97一区二区三区| 成人网页在线免费观看| 国产精品99久久久久久久女警| 中文字幕亚洲在线观看| 国产一区视频在线| 性国裸体高清亚洲| 久久久久久免费视频| 亚洲高清色图| 久久久精品国产免费观看同学| 日韩久久久精品| 日本一区二区高清不卡| 只有这里有精品| 久久久久亚洲av无码专区体验| 欧美有码在线观看视频| 成人av一区二区三区| 国精产品一品二品国精品69xx| 一区二区三区在线免费观看视频| 蜜乳av另类精品一区二区| 精品熟妇无码av免费久久| 亚洲日产av中文字幕| 欧美色婷婷天堂网站| 97国产成人无码精品久久久| 中文字幕亚洲一区二区av在线| 国产欧美精品aaaaaa片| 国语对白在线刺激| 成人性生交大片免费看无遮挡aⅴ| 成人免费毛片高清视频| 岛国av在线播放| 肉色超薄丝袜脚交一区二区| 日韩不卡在线视频| 尤物视频在线观看国产| 欧美拍拍视频| 成人h版在线观看| 国产成人1区| 国产福利一区二区三区在线观看| 一级片免费在线| 国产成人精品无码免费看夜聊软件| 欧美色图欧美色图| 一区二区三区久久网| 日本在线不卡视频| 偷窥自拍亚洲色图精选| www.浪潮av.com| 男女日批视频在线观看| 欧美大片久久久| 免费人成在线观看播放视频| 国产精品.www| 国产精品国产三级国产专区53| 俺去啦;欧美日韩| 影音先锋在线播放| 久久综合伊人77777麻豆| 久久精品久久精品久久| 亚洲三级电影全部在线观看高清| 福利一区二区三区四区| 国产揄拍国内精品对白| 福利一区二区在线观看| 国产传媒av在线| 糖心vlog免费在线观看| 色哟哟国产精品| 国产精品久久一| 日韩视频免费大全中文字幕| 色综合一个色综合亚洲| 丁香视频五月| 成年网站在线观看| 大黑人xxx| 欧美xxxx日本和非洲| 亚洲精品成人无码熟妇在线| www.色综合| 亚洲综合久久av一区二区三区| 神马久久精品综合| av资源在线播放| 久久影院朴妮唛| 午夜影院免费视频| 欧美在线激情视频| 精品区在线观看| 日韩三区在线观看| 青娱乐91视频| 国产精品久久久久永久免费观看| 欧美日韩国产一区中文午夜| 欧美综合激情| 国产精品色视频| 51漫画成人app入口| 日韩精品 欧美| 欧美一区1区三区3区公司| 992tv在线成人免费观看| 国产亚洲毛片在线| 久久成人这里只有精品| 中国女人真人一级毛片| 日本免费黄色网| 污污的视频在线观看| chinese叫床对白videos| 亚洲永久精品ww.7491进入| 成人涩涩网站| 欧美三级在线看| 日本一本草久p| 亚洲高清在线不卡| 亚洲视频在线不卡| 成人国产在线观看| 91国产美女在线观看| 亚洲精品一二三区| 成人在色线视频在线观看免费大全| 亚洲一级片在线播放| 亚洲精品伦理在线| 亚洲国产婷婷综合在线精品| 在线国产伦理一区| 激情深爱一区二区| 精品在线观看入口| 一个人看的www在线免费视频| 日韩成人精品在线观看| 美女国产在线| 国产亚洲精品久久久久久无几年桃| 久久在线视频在线| 亚洲精品社区| 高清国产mv在线观看| 亚洲最新永久观看在线| 天天操天天操天天操天天| 91成人国产综合久久精品| 亚洲av无码成人精品国产| 福利视频理论电影| 精品中文一区| 国产一区二区三区视频在线观看| 国产精品秘入口18禁麻豆免会员| 在线观看理论片| 中文字幕一区二区三区蜜月| 国产盗摄精品一区二区酒店| 成人ar影院免费观看视频| 天天爽夜夜爽视频| 欧美日韩在线精品一区二区三区激情| 少妇精品视频一区二区| 黄色毛片网站| 亚洲精品国产精品国| 久久久精品网| 国产白浆在线免费观看| 91精品啪在线观看国产手机| 呻吟揉丰满对白91乃国产区| 亚洲精品高清无码视频| 日本黄色电影网站| 亚洲码欧美码一区二区三区| 日本理论片2828理论片| 国产区精品视频| 日韩一级片免费视频| 91免费综合在线| av老司机免费在线| 国产成人午夜高潮毛片| 日韩一本精品| 亚洲综合一区二区三区| 亚洲成年人在线播放| 国产乱码77777777| 99久久精品免费观看| 国产一级特黄a大片99| 国产精品96久久久久久又黄又硬| 国产黄色大片在线观看| 欧美一级日韩不卡播放免费| 内射中出日韩无国产剧情| 欧美精品aa| 在线中文字幕不卡| 亚洲国产精品久久久久秋霞蜜臀| 右手影院亚洲欧美| 国产亚洲精品v| 国产一区二区三区av电影| 色综合一区二区| 久久免费观看视频| 亚洲影院色无极综合| 免费成人高清在线视频theav| 91一区二区三区在线播放| 国产精品高清免费在线观看| 国产精品久久久久久久久久辛辛| 欧美gay1069大粗吊| 自拍偷拍亚洲激情| 精品日本一区二区三区| 日韩女在线观看| 国产一区二区在线|播放| 午夜精品免费| 国内外成人在线| 欧美老少做受xxxx高潮| 亚洲欧美影音先锋| 久久精品国产精品亚洲| 免费高清不卡av| 国产一级黄色片免费| 全球最大av网站久久| 久久综合网hezyo| 日韩欧美区一区二| 欧美精品videossex性护士| 亚洲精品日韩综合观看成人91| 久久av国产紧身裤| 亚洲天堂一区| 91激情在线观看| 国产精品不卡| 欧美主播一区二区三区美女 久久精品人| 理论片大全免费理伦片| 国产精品一区二区在线免费观看| 精品国内一区二区三区免费视频| 欧美激情二区| 国产日韩在线看片| 少妇与大狼拘作爱性a| 蜜臀尤物一区二区三区直播| youjizz.com国产| 日漫免费在线观看网站| 日韩性生活视频| 精品国产人成亚洲区| 亚洲精品一区二区网址| 亚洲激情精品| 狠狠躁少妇一区二区三区| 日本中文字幕一区二区| www.jizz在线观看| 欧美久久久久久久久久久久| 美日韩在线视频| 欧美在线看片a免费观看| av基地在线| 精品在线观看入口| 国产高清一区二区| 91视频你懂的| 中文字幕亚洲欧洲| av在线免费播放| 国产99精品一区| 天天干天天操天天操| av网址在线播放| 日韩电影在线观看网站| www.中文字幕| 欧美肥妇bbwbbw| 久草国产视频| 日韩欧美中文视频| 成人在线免费公开观看视频| 亚洲色图激情小说| 国产一级片91| 午夜欧美一区二区三区在线播放| 亚洲精品在线免费| 欧美一级片一区| 成人性生交大片免费看视频在线| 欧美一级爽aaaaa大片| 精品久久久中文字幕人妻| 午夜神马福利影院| 四虎影音在线| 中文字幕av免费在线观看| caopen在线视频| 日本福利一区二区三区| 国产三级三级看三级| 亚洲精品国产精品国自产观看| 国产精品一级黄| 日韩性生活视频| 亚洲一区二区三区乱码aⅴ| 欧美成人午夜激情| 粉嫩高潮美女一区二区三区| 成人免费午夜电影| 日韩av在线高清| 亚洲精品乱码久久久久久自慰| 国产无码精品在线观看| 一本一道精品欧美中文字幕| 久久在线视频在线| 日韩电影在线观看一区二区| 久久免费黄色| 密臀av一区二区三区| 国产一区二区三区四区尤物| 黄色av小说在线观看| 亚洲卡一卡二| 中文字幕在线观看一区二区三区| av网站免费播放| 成人精品影院| 欧美日本精品一区二区三区| 婷婷亚洲五月色综合| aaa国产精品视频| 国产麻豆一区二区三区| 蜜桃视频无码区在线观看| 久色国产在线| 天堂精品视频| 中文字幕中文字幕精品| 欧美成在线视频| 99久久综合网| 高潮毛片又色又爽免费| 免费在线视频一区二区| 亚洲欧美精品伊人久久| 久久人妻无码一区二区| 日韩中文字幕有码| 欧美亚洲另类在线一区二区三区| 欧美五码在线| 日韩精品高清在线观看| 国产精品综合网|