午夜视频免费看_日韩三级电影网站_国产精品久久一级_亚洲一级在线播放_人妻体内射精一区二区三区_91夜夜揉人人捏人人添红杏_91福利在线导航_国产又粗又猛又黄又爽无遮挡_欧美日韩一区在线播放_中文字幕一区二区三区四区不卡 _日日夜夜精品视频免费观看_欧美韩日一区二区三区

主頁 > 知識庫 > PostgreSQL 正則表達式 常用函數的總結

PostgreSQL 正則表達式 常用函數的總結

熱門標簽:怎么申請400電話申請 地圖標注圖標素材入駐 龍圖酒吧地圖標注 電話機器人免費嗎 好搜地圖標注 電銷機器人價格多少錢一臺 怎么辦理400電話呢 400電話申請什么好 百度地圖標注地方備注

PostgreSQL 正則表達式 常用函數的總結

對那些需要進行復雜數據處理的程序來說,正則表達式無疑是一個非常有用的工具。本文重點在于闡述 PostgreSQL 的一些常用正則表達式函數以及源碼中的一些函數。

正則相關部分的目錄結構

[root@localhost regex]# pwd
/opt/hgdb-core/src/include/regex
[root@localhost regex]# ll
total 40
-rw-r--r--. 1 postgres postgres 3490 Mar 19 19:00 regcustom.h
-rw-r--r--. 1 postgres postgres 1332 Mar 19 18:59 regerrs.h
-rw-r--r--. 1 postgres postgres 6703 Mar 19 19:00 regex.h
-rw-r--r--. 1 postgres postgres 2353 Mar 19 19:00 regexport.h
-rw-r--r--. 1 postgres postgres 16454 Mar 19 19:00 regguts.h

 正則表達式編譯、匹配、釋放、錯誤信息相關文件,后面再做具體介紹

[root@localhost regex]# pwd
/opt/hgdb-core/src/backend/regex
[root@localhost regex]# ll reg*.c
-rw-r--r--. 1 postgres postgres 55851 Mar 19 19:00 regcomp.c
-rw-r--r--. 1 postgres postgres 3671 Mar 19 18:59 regerror.c
-rw-r--r--. 1 postgres postgres 34873 Mar 19 19:00 regexec.c
-rw-r--r--. 1 postgres postgres 2123 Mar 19 18:59 regfree.c
[root@localhost regex]# 

 內置函數實現在 regexp.c

[root@localhost adt]# pwd
/opt/hgdb-core/src/backend/utils/adt
[root@localhost adt]# ll regexp.c
-rw-r--r--. 1 postgres postgres 34863 Apr 12 02:29 regexp.c
[root@localhost adt]#

內置函數聲明:

/* src/include/catalog/pg_proc.h */

DATA(insert OID = 2073 ( substring  PGNSP PGUID 12 1 0 0 0 f f f f t f i 2 0 25 "25 25" _null_ _null_ _null_ _null_ _null_ textregexsubstr _null_ _null_ _null_ ));
DESCR("extract text matching regular expression");
DATA(insert OID = 2074 ( substring  PGNSP PGUID 14 1 0 0 0 f f f f t f i 3 0 25 "25 25 25" _null_ _null_ _null_ _null_ _null_ "select pg_catalog.substring($1, pg_catalog.similar_escape($2, $3))" _null_ _null_ _null_ ));
DESCR("extract text matching SQL99 regular expression");

DATA(insert OID = 2284 ( regexp_replace  PGNSP PGUID 12 1 0 0 0 f f f f t f i 3 0 25 "25 25 25" _null_ _null_ _null_ _null_ _null_ textregexreplace_noopt _null_ _null_ _null_ ));
DESCR("replace text using regexp");
DATA(insert OID = 2285 ( regexp_replace  PGNSP PGUID 12 1 0 0 0 f f f f t f i 4 0 25 "25 25 25 25" _null_ _null_ _null_ _null_ _null_ textregexreplace _null_ _null_ _null_ ));
DESCR("replace text using regexp");

DATA(insert OID = 2763 ( regexp_matches  PGNSP PGUID 12 1 1 0 0 f f f f t t i 2 0 1009 "25 25" _null_ _null_ _null_ _null_ _null_ regexp_matches_no_flags _null_ _null_ _null_ ));
DESCR("find all match groups for regexp");
DATA(insert OID = 2764 ( regexp_matches  PGNSP PGUID 12 1 10 0 0 f f f f t t i 3 0 1009 "25 25 25" _null_ _null_ _null_ _null_ _null_ regexp_matches _null_ _null_ _null_ ));
DESCR("find all match groups for regexp");

DATA(insert OID = 2765 ( regexp_split_to_table PGNSP PGUID 12 1 1000 0 0 f f f f t t i 2 0 25 "25 25" _null_ _null_ _null_ _null_ _null_ regexp_split_to_table_no_flags _null_ _null_ _null_ ));
DESCR("split string by pattern");
DATA(insert OID = 2766 ( regexp_split_to_table PGNSP PGUID 12 1 1000 0 0 f f f f t t i 3 0 25 "25 25 25" _null_ _null_ _null_ _null_ _null_ regexp_split_to_table _null_ _null_ _null_ ));
DESCR("split string by pattern");

DATA(insert OID = 2767 ( regexp_split_to_array PGNSP PGUID 12 1 0 0 0 f f f f t f i 2 0 1009 "25 25" _null_ _null_ _null_ _null_ _null_ regexp_split_to_array_no_flags _null_ _null_ _null_ ));
DESCR("split string by pattern");
DATA(insert OID = 2768 ( regexp_split_to_array PGNSP PGUID 12 1 0 0 0 f f f f t f i 3 0 1009 "25 25 25" _null_ _null_ _null_ _null_ _null_ regexp_split_to_array _null_ _null_ _null_ ));

 參數類型及返回值類型:

postgres=# select oid,typname from pg_type where oid = 25 or oid = 1009;
 oid | typname 
------+---------
  25 | text
 1009 | _text
(2 rows)

substring(string from pattern)函數提供了從字符串中抽取一個匹配 POSIX 正則表達式模式的子字符串的方法。如果沒有匹配它返回 NULL ,否則就是文本中匹配模式的那部分。

regexp_replace(source, pattern, replacement [, flags ])函數提供了將匹配 POSIX 正則表達式模式的子字符串替換為新文本的功能。

regexp_matches(string, pattern[, flags ])函數返回一個從匹配POSIX正則表達式模式中獲取的所有子串結果的text數組。
參數flags是一個可選的text字符串,含有0或者更多單字母標記來改變函數行為。標記g導致查找字符串中的每個匹配,而不僅是第一個,每個匹配返回一行。

regexp_split_to_table(string, pattern[, flags ])函數使用POSIX正則表達式模式作為分隔符,分隔字符串。返回結果為string。。

regexp_split_to_array (string, pattern[, flags ])函數與regexp_split_to_table行為相同,但,返回結果為text數組。

具體使用參考用戶手冊。

 src/include/regex/regex.h

 regex_t 結構體

/* the biggie, a compiled RE (or rather, a front end to same) */
typedef struct
{
 int  re_magic; /* magic number */
 size_t re_nsub; /* number of subexpressions */
 long re_info; /* information about RE */
#define REG_UBACKREF  000001
#define REG_ULOOKAHEAD  000002
#define REG_UBOUNDS 000004
#define REG_UBRACES 000010
#define REG_UBSALNUM  000020
#define REG_UPBOTCH 000040
#define REG_UBBS  000100
#define REG_UNONPOSIX  000200
#define REG_UUNSPEC 000400
#define REG_UUNPORT 001000
#define REG_ULOCALE 002000
#define REG_UEMPTYMATCH 004000
#define REG_UIMPOSSIBLE 010000
#define REG_USHORTEST  020000
 int  re_csize; /* sizeof(character) */
 char  *re_endp; /* backward compatibility kludge */
 Oid  re_collation; /* Collation that defines LC_CTYPE behavior */
 /* the rest is opaque pointers to hidden innards */
 char  *re_guts; /* `char *' is more portable than `void *' */
 char  *re_fns;
} regex_t;

存放編譯后的正則表達式

regmatch_t 結構體

/* result reporting (may acquire more fields later) */
typedef struct
{
 regoff_t rm_so;  /* start of substring */
 regoff_t rm_eo;  /* end of substring */
} regmatch_t;

typedef long regoff_t;

成員rm_so 存放匹配文本串在目標串中的開始位置,rm_eo 存放結束位置。通常我們以數組的形式定義一組這樣的結構。

有下面幾個主要的函數聲明

/*
 * the prototypes for exported functions
 */
extern int pg_regcomp(regex_t *, const pg_wchar *, size_t, int, Oid);
extern int pg_regexec(regex_t *, const pg_wchar *, size_t, size_t, rm_detail_t *, size_t, regmatch_t[], int);
extern int pg_regprefix(regex_t *, pg_wchar **, size_t *);
extern void pg_regfree(regex_t *);
extern size_t pg_regerror(int, const regex_t *, char *, size_t);
extern void pg_set_regex_collation(Oid collation);

處理正則表達式常用的函數有 pg_regcomp()、pg_regexec()、pg_regfree() 和 pg_regerror()。

一般處理步驟:編譯正則表達式 pg_regcomp(),匹配正則表達式 pg_regexec(),釋放正則表達式 pg_regfree()。

pg_regerror() :當執行regcomp 或者regexec 產生錯誤的時候,就可以調用這個函數而返回一個包含錯誤信息的字符串。

參數說明

int
pg_regcomp(regex_t *re,
   const chr *string, /* 正則表達式字符串 */
   size_t len, /* 正則表達式字符串長度 */
   int flags,
   Oid collation)

int
pg_regexec(regex_t *re, /* 已經用regcomp函數編譯好的正則表達式 */
   const chr *string, /* 目標字符串 */
   size_t len, /* 目標字符串長度 */
   size_t search_start, /* 匹配開始位置 */
   rm_detail_t *details, /* NULL */
   size_t nmatch, /* 是regmatch_t結構體數組的長度 */
   regmatch_t pmatch[], /* regmatch_t類型的結構體數組,存放匹配文本串的位置信息 */
   int flags)

flags

src/backend/utils/adt/regexp.c

/* all the options of interest for regex functions */
typedef struct pg_re_flags
{
 int  cflags;  /* compile flags for Spencer's regex code */
 bool glob;  /* do it globally (for each occurrence) */
} pg_re_flags;
/*
 * parse_re_flags - parse the options argument of regexp_matches and friends
 *
 * flags --- output argument, filled with desired options
 * opts --- TEXT object, or NULL for defaults
 *
 * This accepts all the options allowed by any of the callers; callers that
 * don't want some have to reject them after the fact.
 */
static void
parse_re_flags(pg_re_flags *flags, text *opts)
{
 /* regex flavor is always folded into the compile flags */
 flags->cflags = REG_ADVANCED;
 flags->glob = false;

 if (opts)
 {
 char  *opt_p = VARDATA_ANY(opts);
 int  opt_len = VARSIZE_ANY_EXHDR(opts);
 int  i;

 for (i = 0; i  opt_len; i++)
 {
  switch (opt_p[i])
  {
  case 'g':
   flags->glob = true;
   break;
  case 'b': /* BREs (but why???) */
   flags->cflags = ~(REG_ADVANCED | REG_EXTENDED | REG_QUOTE);
   break;
  case 'c': /* case sensitive */
   flags->cflags = ~REG_ICASE;
   break;
  case 'e': /* plain EREs */
   flags->cflags |= REG_EXTENDED;
   flags->cflags = ~(REG_ADVANCED | REG_QUOTE);
   break;
  case 'i': /* case insensitive */
   flags->cflags |= REG_ICASE;
   break;
  case 'm': /* Perloid synonym for n */
  case 'n': /* \n affects ^ $ . [^ */
   flags->cflags |= REG_NEWLINE;
   break;
  case 'p': /* ~Perl, \n affects . [^ */
   flags->cflags |= REG_NLSTOP;
   flags->cflags = ~REG_NLANCH;
   break;
  case 'q': /* literal string */
   flags->cflags |= REG_QUOTE;
   flags->cflags = ~(REG_ADVANCED | REG_EXTENDED);
   break;
  case 's': /* single line, \n ordinary */
   flags->cflags = ~REG_NEWLINE;
   break;
  case 't': /* tight syntax */
   flags->cflags = ~REG_EXPANDED;
   break;
  case 'w': /* weird, \n affects ^ $ only */
   flags->cflags = ~REG_NLSTOP;
   flags->cflags |= REG_NLANCH;
   break;
  case 'x': /* expanded syntax */
   flags->cflags |= REG_EXPANDED;
   break;
  default:
   ereport(ERROR,
    (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
    errmsg("invalid regexp option: \"%c\"",
     opt_p[i])));
   break;
  }
 }
 }
}

選項 描述
b 剩余的正則表達式是 BR
c 大小寫敏感匹配(覆蓋操作符類型)
e 剩余的正則表達式是 ERE 
i 大小寫不敏感匹配(覆蓋操作符類型)
m n的歷史同義詞
n 新行敏感匹
p 部分新行敏感匹配
q 重置正則表達式為一個文本("引起")字符串,所有都是普通字符。
s 非新行敏感匹配(缺省)
t 緊語法
w 反轉部分新行敏感("怪異")匹配
x 擴展的語法

以上就是PostgreSQL 正則表達式 常用函數的實例詳解,如有疑問請留言或者到本站社區交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

您可能感興趣的文章:
  • sql腳本函數編寫postgresql數據庫實現解析
  • PostgreSQL數據庫中窗口函數的語法與使用
  • PostgreSQL Node.js實現函數計算方法示例
  • 深入解讀PostgreSQL中的序列及其相關函數的用法
  • Postgresql自定義函數詳解

標簽:溫州 防疫工作 汕尾 浙江 固原 內江 廣西 撫順

巨人網絡通訊聲明:本文標題《PostgreSQL 正則表達式 常用函數的總結》,本文關鍵詞  PostgreSQL,正則,表達式,常用,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PostgreSQL 正則表達式 常用函數的總結》相關的同類信息!
  • 本頁收集關于PostgreSQL 正則表達式 常用函數的總結的相關信息資訊供網民參考!
  • 推薦文章
    91免费黄视频| 亚洲人妻一区二区| 精品系列免费在线观看| 26uuu欧美| 欧美视频在线观看一区| 自拍偷拍免费精品| 国产一区二区三区无遮挡| 亚洲精品中文字幕无码蜜桃| 91精品一区二区三区蜜桃| 噜噜噜久久,亚洲精品国产品| 99久久综合99久久综合网站| 欧美在线一区二区| 91精品国产沙发| 国产精品av免费| 免费看污片的网站| 五月婷婷综合久久| 午夜精品爽啪视频| 欧美黄色成人网| av电影一区二区三区| 国产jk精品白丝av在线观看| 黑人操亚洲女人| 亚洲欧美日韩中文字幕一区二区三区| 亚洲深夜福利视频| 色狠狠久久av五月综合|| 亚洲一区二区在线免费| 亚洲黄色小说网| 一区二区三区.www| 欧美精品日韩www.p站| 五月天婷亚洲天综合网鲁鲁鲁| 在线观看国产免费视频| 午夜在线视频免费| 欧日韩精品视频| 国产成人亚洲综合91精品| 国产一区二区视频播放| 日本少妇激情舌吻| 久久久噜噜噜久久中文字幕色伊伊 | 少妇av一区二区| 亚洲第一狼人社区| 国产不卡av在线免费观看| 日韩欧美亚洲天堂| 国产精品一区二区三区在线免费观看| 夜夜精品浪潮av一区二区三区| 久久久久久91| 国产视频手机在线播放| 91肉色超薄丝袜脚交一区二区| 亚洲黄色av一区| 欧美亚洲国产视频小说| 91制片厂毛片| 午夜激情小视频| 日韩一区二区在线观看| 欧美系列一区| 日本少妇裸体做爰| 一区二区三区在线观看视频| 欧美最猛黑人xxxx黑人猛叫黄 | 开心色怡人综合网站| 99久久精品免费视频| 国产suv一区二区三区88区| 亚洲免费福利视频| 国产精品999视频| 国产v在线观看| 91麻豆精品国产无毒不卡在线观看| 精品久久久久久一区| 色在线观看视频| 亚洲黄色录像片| 99蜜桃在线观看免费视频网站| 手机免费看av| 欧美精彩视频一区二区三区| 国产福利视频一区二区| 亚洲成人日韩在线| 久久九九99视频| 99久久久无码国产精品性色戒| 欧美一区二区三区小说| 欧美视频二区36p| 久久精品亚洲精品| 精品熟女一区二区三区| 激情五月五月婷婷| 激情六月婷婷综合| 久久在线精品视频| 黄色av网址在线| 欧美最大成人综合网| 成人午夜视频福利| 欧美日韩中文字幕在线播放| 性一交一乱一精一晶| 国产香蕉久久精品综合网| 欧美日韩成人精品| 久久人妻一区二区| 亚州av在线播放| 亚洲欧美成aⅴ人在线观看 | 精品无码久久久久久国产| 国产欧美一区二区视频| 日本一级淫片色费放| 欧美日韩在线亚洲一区蜜芽| 日韩精品极品视频| www.97视频| 日本高清不卡aⅴ免费网站| 亚洲精品中文字幕在线播放| 久久久久久999| 亚洲天堂小视频| 美女黄色丝袜一区| 日韩三级av在线| 一区二区在线免费视频| 成人在线观看a| 久久精品一区二区三区不卡 | 国产精品成人免费精品自在线观看| 久久国产精品视频在线观看| 久久久久久麻豆| 欧美资源一区| 成人免费看黄yyy456| 欧美一区二区三区免费在线看| 欧美成人在线免费观看| 波多野结衣视频一区| 亚洲精品一区二| 日韩精品在线看片z| 日韩福利电影在线观看| 精品人妻大屁股白浆无码| 亚洲国产成人porn| 欧美aⅴ在线观看| www.成人在线观看| 自拍偷拍亚洲一区| 天天舔天天操天天干| 国产精品久久久久久一区二区三区 | 亚洲国产精品久久久| 在线视频日韩欧美| 中文字幕777| 亚洲国产婷婷香蕉久久久久久| 永久免费看片直接| 日本久久久久久久久| 国产精品欧美经典| 国产精品久久久久久免费播放| 在线播放豆国产99亚洲| 日韩欧美国产一二三区| 中文字幕一区在线播放| 日韩av综合网站| 9.1成人看片免费版| 69p69国产精品| 国产av无码专区亚洲av毛网站| 成人一区二区三区在线观看| 热99久久精品| 色呦呦中文字幕| 视频免费在线观看| 日韩亚洲欧美综合| 黄色片视频免费观看| 欧美激情中文网| 三上悠亚在线一区| 日韩欧美国产午夜精品| 337人体粉嫩噜噜噜| 欧美在线视频一区| 亚洲视频资源在线| 一区二区视频观看| www.xxxx精品| 91片黄在线观看喷潮| 国内精品模特av私拍在线观看| 国产成人在线影院| 日本高清视频精品| 91在线播放观看| 欧美噜噜久久久xxx| 国产欧美视频一区二区| 97久久久免费福利网址| 日本高清久久天堂| 色狠狠桃花综合| 成人免费高清在线| 久久精品久久精品久久| 国产日韩欧美一二三区| 激情综合五月天| 日韩日韩日韩日韩日韩| 亚洲人成电影网站色xx| av免费在线观看不卡| 国产精品午夜一区二区欲梦| 不卡av在线网| 精品人伦一区二区三电影| 在线播放国产一区中文字幕剧情欧美| 国产福利一区二区三区视频在线 | 91福利在线播放| 久久久久久亚洲综合影院红桃 | 亚洲码在线观看| 国产日韩欧美在线一区| 国产男人搡女人免费视频| 日本视频精品一区| 91捆绑美女网站| 免费a v网站| 日本中文字幕不卡免费| 久久久久国产精品麻豆ai换脸| 国产麻豆日韩| 欧美日韩在线播放三区四区| 亚洲精品乱码久久久久久黑人| 一起草在线视频| 日韩视频免费看| 中文字幕一区二| 亚洲国产日韩一区无码精品久久久| 另类图片亚洲另类| 亚洲成av人片在www色猫咪| 天天操天天操天天干| av黄色在线看| 澳门黄色一级片| 制服丝袜在线第一页| 久久久伊人欧美| 国产91丝袜在线播放九色| 久久久久亚洲av成人无码电影| 97婷婷涩涩精品一区| 天天亚洲美女在线视频| 精品一区在线观看视频| 美脚丝袜一区二区三区在线观看| 久久久精品一区二区| 日韩一区二区在线播放| 国产欧美久久久| 欧美成人一区二区在线观看| 999在线观看免费大全电视剧| 精品一区二区免费| 国产18无套直看片| 成人毛片一区二区| 亚洲影院污污.| 国产欧美日韩一区二区三区| 欧美在线一区二区三区四区| 国产在线精品91| 午夜肉伦伦影院| 国产极品粉嫩福利姬萌白酱| 久久视频在线观看中文字幕| 日韩av在线免播放器| 国产色产综合色产在线视频| 国产哺乳奶水91在线播放| 亚洲熟女毛茸茸| 美国av一区二区三区| 91成人看片片| 老司机精品视频导航| 精品一区二区三区日韩| 韩国毛片一区二区三区| 极品颜值美女露脸啪啪| 99久久国产宗和精品1上映| 亚洲看片网站| 亚洲国产精品欧美一二99| 国产麻豆免费视频| 亚洲天堂999| 欧美一级黄视频| 黄网在线观看视频| 日韩成人精品在线| 中文字幕亚洲一区二区av在线| 日本韩国精品一区二区在线观看| 在线亚洲一区观看| 日韩欧美亚洲国产另类| 日韩色视频在线观看| 国产精品久久777777| www.色综合.com| 亚洲精品国产欧美在线观看| av片在线免费看| 成年人二级毛片| 日本免费不卡一区二区| 久久久久久久影院| 91久久精品一区二区| 狠狠久久亚洲欧美| 国产剧情在线视频| 免费日本黄色网址| 欧美日韩中文字幕在线观看| 中国老头性行为xxxx| 爱豆国产剧免费观看大全剧苏畅| 深夜视频在线观看| 北京富婆泄欲对白| 亚洲中文一区二区三区| 亚洲欧美电影一区二区| 97热精品视频官网| 97中文字幕在线| 黄色片网站免费| 亚洲视频在线免费播放| 免费中文字幕视频| 蜜桃视频最新网址| 国产一区二区播放| 欧美肥妇bbwbbw| 久草资源在线视频| 无码精品黑人一区二区三区 | 午夜精品久久久久久不卡8050| 久久国产欧美日韩精品| 精品人妻一区二区三区潮喷在线| 日本少妇aaa| 丁香激情五月少妇| 久久久国产精品成人免费| 日本人亚洲人jjzzjjz| 在线视频 91| 免费在线观看视频一区| 精品女厕一区二区三区| 欧美久久电影| 久久久久久久国产精品毛片| 欧美激情中文字幕| 日韩精品久久久久久福利| 国产精品乱码视频| 亚洲欧美电影在线观看| 99精品一级欧美片免费播放| 亚洲人精品午夜射精日韩| 成年人网站av| 国产精彩视频在线观看| 日本韩国欧美在线观看| 久久久无码精品亚洲国产| 亚洲欧美高清在线| 最新国产精品自拍| 女人被狂躁c到高潮| 野花社区视频在线观看| 天天舔天天操天天干| 美女视频黄免费| 精品国产av一区二区三区| 亚洲免费在线视频| 中文字幕亚洲无线码a| 欧美亚洲另类激情另类| 青青在线免费观看| 国产一级片毛片| 国产一二三四五区| 久热精品在线播放| 最新中文字幕2018| 成人日韩在线视频| 下面一进一出好爽视频| 三上悠亚在线一区| 久久精品视频91| 国产精品999视频| 8x8ⅹ国产精品一区二区二区| 中文字幕avav| 自拍偷拍欧美亚洲| 3d成人h动漫网站入口| 成人黄色大片网站| 蜜臀久久久99精品久久久久久| 668精品在线视频| 亚洲欧美色图视频| 日韩一区有码在线| 日韩精品日韩在线观看| 亚洲欧洲精品一区二区| 小日子的在线观看免费第8集| av中文字幕免费| 亚洲欧美色一区| 欧美理论片在线观看| 亚洲第一成肉网| eeuss鲁片一区二区三区在线观看| 亚洲欧洲韩国日本视频| 欧美一级精品在线| 日产日韩在线亚洲欧美 | 99久久精品免费看国产一区二区三区| 国产毛片久久久久久国产毛片| 天堂网视频在线| 亚洲午夜精品17c| 国产精品免费在线免费| 亚洲色图久久久| 97精品人妻一区二区三区| 欧美综合天天夜夜久久| 91人人爽人人爽人人精88v| 最新黄色网址在线观看| 亚洲欧美一区二区精品久久久| 精品人妻一区二区三区香蕉 | 97在线精品国自产拍中文| 天堂一区二区三区| 国产免费又粗又猛又爽| 国产女人18毛片水18精| 色诱亚洲精品久久久久久| 国产伊人精品在线| 熟女俱乐部一区二区| 久久99国产精品尤物| 精品毛片网大全| 国产精品视频网| 国产福利在线观看视频| 蜜臀av一区二区| 精品国产91亚洲一区二区三区婷婷| 成人自拍爱视频| 一区二区三区黄色片| 精品国偷自产在线| 国产午夜福利一区| 蜜臀av一区二区在线观看| 欧美国产日韩一区二区在线观看| 精品人妻中文无码av在线 | 日日噜噜噜夜夜爽亚洲精品| 无码人妻一区二区三区线| 色999日韩欧美国产| 日韩av男人天堂| 久久精品视频亚洲| 久久精品色妇熟妇丰满人妻| 午夜精品久久久久久久久| 亚洲va国产va天堂va久久| 神宫寺奈绪一区二区三区| 另类美女黄大片| 佐山爱在线视频| 亚洲青青青在线视频| 女同一区二区| 日本免费精品视频| 亚洲美女在线观看| 色噜噜噜噜噜噜| 亚洲国产精品久久久久秋霞蜜臀| 亚洲一级黄色录像| 午夜在线成人av| 天天摸天天碰天天添| 福利电影一区二区三区| 在线看无码的免费网站| 色综合久久久久久| 精品99999| 3d动漫精品啪啪一区二区下载| 亚洲二区在线观看| 国产综合免费视频| 精品一区二区三区电影| 丰满岳乱妇国产精品一区| 亚洲黄色成人久久久| 欧美三级韩国三级日本三斤| 18禁裸乳无遮挡啪啪无码免费| 亚洲老板91色精品久久| 国产性一乱一性一伧一色| 97视频在线看| 日日夜夜精品免费| 久久99精品久久久久久琪琪| 国产又粗又猛又爽又| 欧洲s码亚洲m码精品一区| 性生交大片免费看女人按摩| 国产精品免费电影| 国产成人精品aa毛片| 一区二区视频在线免费| 国产在线精品国自产拍免费| 亚洲伊人成综合成人网| 免费成人在线视频观看| 狠狠色狠狠色综合人人| jiyouzz国产精品久久|