亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? regex.c

?? 操作系統(tǒng)SunOS 4.1.3版本的源碼
?? C
字號:
#if !defined(lint) && defined(SCCSIDS)static	char sccsid[] = "@(#)regex.c 1.1 92/07/30 SMI"; /* from UCB 4.1 80/12/21 */#endif/* * routines to do regular expression matching * * Entry points: * *	re_comp(s) *		char *s; *	 ... returns 0 if the string s was compiled successfully, *		     a pointer to an error message otherwise. *	     If passed 0 or a null string returns without changing *           the currently compiled re (see note 11 below). * *	re_exec(s) *		char *s; *	 ... returns 1 if the string s matches the last compiled regular *		       expression,  *		     0 if the string s failed to match the last compiled *		       regular expression, and *		    -1 if the compiled regular expression was invalid  *		       (indicating an internal error). * * The strings passed to both re_comp and re_exec may have trailing or * embedded newline characters; they are terminated by nulls. * * The identity of the author of these routines is lost in antiquity; * this is essentially the same as the re code in the original V6 ed. * * The regular expressions recognized are described below. This description * is essentially the same as that for ed. * *	A regular expression specifies a set of strings of characters. *	A member of this set of strings is said to be matched by *	the regular expression.  In the following specification for *	regular expressions the word `character' means any character but NUL. * *	1.  Any character except a special character matches itself. *	    Special characters are the regular expression delimiter plus *	    \ [ . and sometimes ^ * $. *	2.  A . matches any character. *	3.  A \ followed by any character except a digit or ( ) *	    matches that character. *	4.  A nonempty string s bracketed [s] (or [^s]) matches any *	    character in (or not in) s. In s, \ has no special meaning, *	    and ] may only appear as the first letter. A substring  *	    a-b, with a and b in ascending ASCII order, stands for *	    the inclusive range of ASCII characters. *	5.  A regular expression of form 1-4 followed by * matches a *	    sequence of 0 or more matches of the regular expression. *	6.  A regular expression, x, of form 1-8, bracketed \(x\) *	    matches what x matches. *	7.  A \ followed by a digit n matches a copy of the string that the *	    bracketed regular expression beginning with the nth \( matched. *	8.  A regular expression of form 1-8, x, followed by a regular *	    expression of form 1-7, y matches a match for x followed by *	    a match for y, with the x match being as long as possible *	    while still permitting a y match. *	9.  A regular expression of form 1-8 preceded by ^ (or followed *	    by $), is constrained to matches that begin at the left *	    (or end at the right) end of a line. *	10. A regular expression of form 1-9 picks out the longest among *	    the leftmost matches in a line. *	11. An empty regular expression stands for a copy of the last *	    regular expression encountered. *//* * constants for re's */#define	CBRA	1#define	CCHR	2#define	CDOT	4#define	CCL	6#define	NCCL	8#define	CDOL	10#define	CEOF	11#define	CKET	12#define	CBACK	18#define	CSTAR	01#define	ESIZE	512#define	NBRA	9static struct re_globals {	char	_expbuf[ESIZE];	char	*_braslist[NBRA], *_braelist[NBRA];	char	_circf;} *re_globals;#define	expbuf (_re->_expbuf)#define	braslist (_re->_braslist)#define	braelist (_re->_braelist)#define	circf (_re->_circf)/* * compile the regular expression argument into a dfa */char *re_comp(sp)	register char	*sp;{	register int	c;	register struct re_globals *_re = re_globals;	register char	*ep;	int	cclcnt, numbra = 0;	char	*lastep = 0;	char	bracket[NBRA];	char	*bracketp = &bracket[0];	char	*retoolong = "Regular expression too long";	if (_re == 0) {		_re = (struct re_globals *)calloc(1, sizeof (*_re));		if (_re == 0)			return ("Out of memory");		re_globals = _re;	}	ep = expbuf;#define	comerr(msg) {expbuf[0] = 0; numbra = 0; return(msg); }	if (sp == 0 || *sp == '\0') {		if (*ep == 0)			return("No previous regular expression");		return(0);	}	if (*sp == '^') {		circf = 1;		sp++;	}	else		circf = 0;	for (;;) {		if (ep >= &expbuf[ESIZE])			comerr(retoolong);		if ((c = *sp++) == '\0') {			if (bracketp != bracket)				comerr("unmatched \\(");			*ep++ = CEOF;			*ep++ = 0;			return(0);		}		if (c != '*')			lastep = ep;		switch (c) {		case '.':			*ep++ = CDOT;			continue;		case '*':			if (lastep == 0 || *lastep == CBRA || *lastep == CKET)				goto defchar;			*lastep |= CSTAR;			continue;		case '$':			if (*sp != '\0')				goto defchar;			*ep++ = CDOL;			continue;		case '[':			*ep++ = CCL;			*ep++ = 0;			cclcnt = 1;			if ((c = *sp++) == '^') {				c = *sp++;				ep[-2] = NCCL;			}			do {				if (c == '\0')					comerr("missing ]");				if (c == '-' && ep [-1] != 0) {					if ((c = *sp++) == ']') {						*ep++ = '-';						cclcnt++;						break;					}					while (ep[-1] < c) {						*ep = ep[-1] + 1;						ep++;						cclcnt++;						if (ep >= &expbuf[ESIZE])							comerr(retoolong);					}				}				*ep++ = c;				cclcnt++;				if (ep >= &expbuf[ESIZE])					comerr(retoolong);			} while ((c = *sp++) != ']');			lastep[1] = cclcnt;			continue;		case '\\':			if ((c = *sp++) == '(') {				if (numbra >= NBRA)					comerr("too many \\(\\) pairs");				*bracketp++ = numbra;				*ep++ = CBRA;				*ep++ = numbra++;				continue;			}			if (c == ')') {				if (bracketp <= bracket)					comerr("unmatched \\)");				*ep++ = CKET;				*ep++ = *--bracketp;				continue;			}			if (c >= '1' && c < ('1' + NBRA)) {				*ep++ = CBACK;				*ep++ = c - '1';				continue;			}			*ep++ = CCHR;			*ep++ = c;			continue;		defchar:		default:			*ep++ = CCHR;			*ep++ = c;		}	}}/*  * match the argument string against the compiled re */intre_exec(p1)	register char	*p1;{	register struct re_globals *_re = re_globals;	register char	*p2;	register int	c;	int	rv;	if (_re == 0)		return (0);	p2 = expbuf;	for (c = 0; c < NBRA; c++) {		braslist[c] = 0;		braelist[c] = 0;	}	if (circf)		return((advance(p1, p2)));	/*	 * fast check for first character	 */	if (*p2 == CCHR) {		c = p2[1];		do {			if (*p1 != c)				continue;			if (rv = advance(p1, p2))				return(rv);		} while (*p1++);		return(0);	}	/*	 * regular algorithm	 */	do		if (rv = advance(p1, p2))			return(rv);	while (*p1++);	return(0);}/*  * try to match the next thing in the dfa */static	intadvance(lp, ep)	register char	*lp, *ep;{	register char	*curlp;	int	ct, i;	int	rv;	register struct re_globals *_re = re_globals;	for (;;)		switch (*ep++) {		case CCHR:			if (*ep++ == *lp++)				continue;			return(0);		case CDOT:			if (*lp++)				continue;			return(0);		case CDOL:			if (*lp == '\0')				continue;			return(0);		case CEOF:			return(1);		case CCL:			if (cclass(ep, *lp++, 1)) {				ep += *ep;				continue;			}			return(0);		case NCCL:			if (cclass(ep, *lp++, 0)) {				ep += *ep;				continue;			}			return(0);		case CBRA:			braslist[*ep++] = lp;			continue;		case CKET:			braelist[*ep++] = lp;			continue;		case CBACK:			if (braelist[i = *ep++] == 0)				return(-1);			if (backref(i, lp)) {				lp += braelist[i] - braslist[i];				continue;			}			return(0);		case CBACK|CSTAR:			if (braelist[i = *ep++] == 0)				return(-1);			curlp = lp;			ct = braelist[i] - braslist[i];			while (backref(i, lp))				lp += ct;			while (lp >= curlp) {				if (rv = advance(lp, ep))					return(rv);				lp -= ct;			}			continue;		case CDOT|CSTAR:			curlp = lp;			while (*lp++)				;			goto star;		case CCHR|CSTAR:			curlp = lp;			while (*lp++ == *ep)				;			ep++;			goto star;		case CCL|CSTAR:		case NCCL|CSTAR:			curlp = lp;			while (cclass(ep, *lp++, ep[-1] == (CCL|CSTAR)))				;			ep += *ep;			goto star;		star:			do {				lp--;				if (rv = advance(lp, ep))					return(rv);			} while (lp > curlp);			return(0);		default:			return(-1);		}}staticbackref(i, lp)	register int	i;	register char	*lp;{	register char	*bp;	register struct re_globals *_re = re_globals;	bp = braslist[i];	while (*bp++ == *lp++)		if (bp >= braelist[i])			return(1);	return(0);}static intcclass(set, c, af)	register char	*set, c;	int	af;{	register int	n;	if (c == 0)		return(0);	n = *set++;	while (--n)		if (*set++ == c)			return(af);	return(! af);}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美不卡一区二区| 色拍拍在线精品视频8848| 欧美二区在线观看| 丝袜美腿高跟呻吟高潮一区| 在线观看视频一区二区| 亚洲成av人片在www色猫咪| 欧美日韩日日摸| 美女视频黄免费的久久| 久久久久久久精| 不卡的av电影在线观看| 一区二区三区中文字幕精品精品 | 欧美成人精品福利| 国产麻豆精品95视频| 欧美国产国产综合| 欧美性生活影院| 精品中文av资源站在线观看| 久久久久99精品一区| 91女神在线视频| 图片区日韩欧美亚洲| 欧美精品一区二区三区很污很色的| 国产成人在线免费观看| 亚洲一区自拍偷拍| 久久伊人蜜桃av一区二区| 成人高清在线视频| 天天综合日日夜夜精品| 国产日韩一级二级三级| 欧洲av一区二区嗯嗯嗯啊| 六月丁香婷婷色狠狠久久| 国产精品入口麻豆九色| 欧美高清视频不卡网| 国产风韵犹存在线视精品| 一区二区三区av电影 | 久久超碰97人人做人人爱| 国产精品久久久久aaaa樱花| 欧美精品在线一区二区| 成人动漫一区二区三区| 青青草成人在线观看| 国产精品的网站| 日韩女优视频免费观看| 91成人免费网站| 国产成人福利片| 欧美96一区二区免费视频| 亚洲三级在线免费观看| 久久久噜噜噜久久人人看| 69久久99精品久久久久婷婷| 99国产麻豆精品| 韩国av一区二区三区四区| 一二三四区精品视频| 国产精品久久久久久久久免费丝袜 | 亚洲精品视频观看| 精品电影一区二区| 色综合久久综合网欧美综合网 | 一区在线播放视频| 欧美tickling挠脚心丨vk| 欧美探花视频资源| 97精品久久久久中文字幕 | 一区二区三区精品| 国产精品福利一区二区三区| 日韩精品一区二区三区视频| 欧美日韩一区视频| 色婷婷综合激情| 成人ar影院免费观看视频| 国模冰冰炮一区二区| 日韩av不卡在线观看| 亚洲午夜免费视频| 亚洲精品国产一区二区三区四区在线| 久久日一线二线三线suv| 日韩欧美中文字幕公布| 欧美一级日韩免费不卡| 欧美狂野另类xxxxoooo| 在线观看av一区| 色系网站成人免费| 色丁香久综合在线久综合在线观看| 成人午夜激情视频| 成人app网站| 99re8在线精品视频免费播放| 国产成人精品亚洲日本在线桃色| 激情久久五月天| 国产91富婆露脸刺激对白| 粉嫩高潮美女一区二区三区| 成人丝袜视频网| 99久久免费视频.com| 色8久久精品久久久久久蜜| 色美美综合视频| 欧洲另类一二三四区| 欧美丝袜第三区| 91.麻豆视频| 欧美成人精品二区三区99精品| 久久综合久久综合久久| 久久精品在线免费观看| 中文字幕在线不卡一区| 一区二区三区免费在线观看| 亚洲午夜精品在线| 日本午夜一区二区| 国产一区二区三区综合| 国产99久久久久| 在线一区二区三区做爰视频网站| 欧美日韩一区二区在线视频| 欧美一区二区三区在线观看| 久久亚洲影视婷婷| 国产精品久久久久aaaa樱花| 一区二区三区在线观看网站| 日韩高清一级片| 国产精品一卡二卡在线观看| 91麻豆免费视频| 日韩一区二区三区av| 国产亲近乱来精品视频| 亚洲一区二区三区四区不卡 | 蜜臀精品一区二区三区在线观看| 国产一区二区三区在线观看精品 | 亚洲福利视频三区| 久久国产日韩欧美精品| a在线欧美一区| 91精品国产麻豆国产自产在线| 久久精品综合网| 亚洲第一会所有码转帖| 激情文学综合插| 在线看国产一区二区| www久久精品| 一区二区高清视频在线观看| 久久不见久久见免费视频1| 99免费精品在线| 欧美精品99久久久**| 中文字幕的久久| 免费成人在线网站| 91麻豆精东视频| 欧美videos中文字幕| 一区二区三区蜜桃网| 国产精品亚洲成人| 欧美日韩高清一区| 国产精品午夜春色av| 青青草成人在线观看| 一本大道久久精品懂色aⅴ| 国产亚洲美州欧州综合国| 中文字幕一区二区三区乱码在线 | 亚洲免费在线观看| 国产精品综合网| 欧美精品少妇一区二区三区| 欧美国产1区2区| 韩国v欧美v日本v亚洲v| 67194成人在线观看| 亚洲精品国产精品乱码不99| 国产精品99久久久久久有的能看| 欧美日韩一区三区| 一卡二卡三卡日韩欧美| 成人av网站在线观看免费| 精品蜜桃在线看| 视频一区中文字幕| 在线一区二区三区| 亚洲欧美日韩国产中文在线| 国产成人免费视频网站| 久久先锋影音av鲁色资源网| 青青草一区二区三区| 欧美在线观看一区二区| 中文字幕一区三区| 粉嫩av亚洲一区二区图片| 欧美不卡一二三| 奇米综合一区二区三区精品视频 | 蜜桃久久精品一区二区| 欧美少妇bbb| 亚洲3atv精品一区二区三区| 一本到三区不卡视频| 中文字幕字幕中文在线中不卡视频| 国产乱理伦片在线观看夜一区| 日韩三级精品电影久久久| 日韩精品亚洲一区二区三区免费| 欧美色国产精品| 午夜视频久久久久久| 欧美精品电影在线播放| 日韩精品国产精品| 日韩免费一区二区三区在线播放| 日韩高清在线一区| 欧美大胆一级视频| 国产一区二区三区四区五区美女| 精品国产凹凸成av人导航| 久久er99精品| 国产日韩欧美一区二区三区乱码 | 欧美一区二区三区四区五区| 五月天激情小说综合| 欧美精品亚洲二区| 日本在线不卡视频| 26uuu国产一区二区三区| 国产成人精品亚洲777人妖 | 亚洲国产精品一区二区尤物区| 色88888久久久久久影院按摩| 亚洲综合999| 欧美日韩国产综合视频在线观看| 午夜精品久久一牛影视| 日韩你懂的电影在线观看| 国产mv日韩mv欧美| 亚洲免费视频中文字幕| 欧美精品久久久久久久久老牛影院| 美腿丝袜在线亚洲一区| 久久久综合网站| 97精品电影院| 天天色天天操综合| 国产欧美日韩精品在线| 欧美中文字幕亚洲一区二区va在线| 日韩电影在线免费| 国产亚洲综合av|