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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? research.cxx

?? wxGTK 是 wxWidgets 的 linux GTK+ (>2.2.3)版本。wxWidgets 是一個跨平臺的 GUI 框架
?? CXX
?? 第 1 頁 / 共 2 頁
字號:
// Scintilla source code edit control/** @file RESearch.cxx ** Regular expression search library. **//* * regex - Regular expression pattern matching and replacement * * By:  Ozan S. Yigit (oz) *      Dept. of Computer Science *      York University * * Original code available from http://www.cs.yorku.ca/~oz/ * Translation to C++ by Neil Hodgson neilh@scintilla.org * Removed all use of register. * Converted to modern function prototypes. * Put all global/static variables into an object so this code can be * used from multiple threads, etc. * * These routines are the PUBLIC DOMAIN equivalents of regex * routines as found in 4.nBSD UN*X, with minor extensions. * * These routines are derived from various implementations found * in software tools books, and Conroy's grep. They are NOT derived * from licensed/restricted software. * For more interesting/academic/complicated implementations, * see Henry Spencer's regexp routines, or GNU Emacs pattern * matching module. * * Modification history removed. * * Interfaces: *  RESearch::Compile:      compile a regular expression into a NFA. * *          const char *RESearch::Compile(const char *pat, int length, *                                        bool caseSensitive, bool posix) * * Returns a short error string if they fail. * *  RESearch::Execute:      execute the NFA to match a pattern. * *          int RESearch::Execute(characterIndexer &ci, int lp, int endp) * *  RESearch::Substitute:   substitute the matched portions in a new string. * *          int RESearch::Substitute(CharacterIndexer &ci, char *src, char *dst) * *  re_fail:                failure routine for RESearch::Execute. (no longer used) * *          void re_fail(char *msg, char op) * * Regular Expressions: * *      [1]     char    matches itself, unless it is a special *                      character (metachar): . \ [ ] * + ^ $ *                      and ( ) if posix option. * *      [2]     .       matches any character. * *      [3]     \       matches the character following it, except: *                      - \a, \b, \f, \n, \t, \v match the *                      corresponding C escape char; *                      - if not in posix mode, when followed by a *                      left or right round bracket (see [7]); *                      - when followed by a digit 1 to 9 (see [8]); *                      - when followed by a left or right angle bracket *                      (see [9]). *                      It is used as an escape character for all *                      other meta-characters, and itself. When used *                      in a set ([4]), it is treated as an ordinary *                      character (except for escape chars). * *      [4]     [set]   matches one of the characters in the set. *                      If the first character in the set is "^", *                      it matches a character NOT in the set, i.e. *                      complements the set. A shorthand S-E (start-end) *                      is used to specify a set of characters S upto *                      E, inclusive. The special characters "]" and *                      "-" have no special meaning if they appear *                      as the first chars in the set. To include both, *                      put - first: [-]A-Z]: *                      [-]|] matches these 2 chars, *                      []-|] matches from ] to | chars. *                      examples:        match: * *                              [a-z]    any lowercase alpha * *                              [^-]]    any char except - and ] * *                              [^A-Z]   any char except uppercase *                                       alpha * *                              [a-zA-Z] any alpha * *      [5]     *       any regular expression form [1] to [4], followed by *                      closure char (*) matches zero or more matches of *                      that form. * *      [6]     +       same as [5], except it matches one or more. * *      [7]             a regular expression in the form [1] to [10], enclosed *                      as \(form\) (or (form) with posix flag) matches what *                      form matches. The enclosure creates a set of tags, *                      used for [8] and for pattern substitution. *                      The tagged forms are numbered starting from 1. * *      [8]             a \ followed by a digit 1 to 9 matches whatever a *                      previously tagged regular expression ([7]) matched. * *      [9]     \<      a regular expression starting with a \< construct *              \>      and/or ending with a \> construct, restricts the *                      pattern matching to the beginning of a word, and/or *                      the end of a word. A word is defined to be a character *                      string beginning and/or ending with the characters *                      A-Z a-z 0-9 and _. It must also be preceded and/or *                      followed by any character outside those mentioned. * *      [10]            a composite regular expression xy where x and y *                      are in the form [1] to [10] matches the longest *                      match of x followed by a match for y. * *      [11]    ^       a regular expression starting with a ^ character *              $       and/or ending with a $ character, restricts the *                      pattern matching to the beginning of the line, *                      or the end of line. [anchors] Elsewhere in the *                      pattern, ^ and $ are treated as ordinary characters. * * * Acknowledgements: * *  HCR's Hugh Redelmeier has been most helpful in various *  stages of development. He convinced me to include BOW *  and EOW constructs, originally invented by Rob Pike at *  the University of Toronto. * * References: *              Software tools                  Kernighan & Plauger *              Software tools in Pascal        Kernighan & Plauger *              Grep [rsx-11 C dist]            David Conroy *              ed - text editor                Un*x Programmer's Manual *              Advanced editing on Un*x        B. W. Kernighan *              RegExp routines                 Henry Spencer * * Notes: * *	This implementation uses a bit-set representation for character *	classes for speed and compactness. Each character is represented *	by one bit in a 256-bit block. Thus, CCL always takes a *	constant 32 bytes in the internal nfa, and RESearch::Execute does a single *	bit comparison to locate the character in the set. * * Examples: * *  pattern:    foo*.* *  compile:    CHR f CHR o CLO CHR o END CLO ANY END END *  matches:    fo foo fooo foobar fobar foxx ... * *  pattern:    fo[ob]a[rz] *  compile:    CHR f CHR o CCL bitset CHR a CCL bitset END *  matches:    fobar fooar fobaz fooaz * *  pattern:    foo\\+ *  compile:    CHR f CHR o CHR o CHR \ CLO CHR \ END END *  matches:    foo\ foo\\ foo\\\  ... * *  pattern:    \(foo\)[1-3]\1  (same as foo[1-3]foo) *  compile:    BOT 1 CHR f CHR o CHR o EOT 1 CCL bitset REF 1 END *  matches:    foo1foo foo2foo foo3foo * *  pattern:    \(fo.*\)-\1 *  compile:    BOT 1 CHR f CHR o CLO ANY END EOT 1 CHR - REF 1 END *  matches:    foo-foo fo-fo fob-fob foobar-foobar ... */#include "CharClassify.h"#include "RESearch.h"// Shut up annoying Visual C++ warnings:#ifdef _MSC_VER#pragma warning(disable: 4514)#endif#define OKP     1#define NOP     0#define CHR     1#define ANY     2#define CCL     3#define BOL     4#define EOL     5#define BOT     6#define EOT     7#define BOW     8#define EOW     9#define REF     10#define CLO     11#define END     0/* * The following defines are not meant to be changeable. * They are for readability only. */#define BLKIND  0370#define BITIND  07const char bitarr[] = {1,2,4,8,16,32,64,'\200'};#define badpat(x)	(*nfa = END, x)/* * Character classification table for word boundary operators BOW * and EOW is passed in by the creator of this object (Scintilla * Document). The Document default state is that word chars are: * 0-9,a-z, A-Z and _ */RESearch::RESearch(CharClassify *charClassTable) {	charClass = charClassTable;	Init();}RESearch::~RESearch() {	Clear();}void RESearch::Init() {	sta = NOP;                  /* status of lastpat */	bol = 0;	for (int i=0; i<MAXTAG; i++)		pat[i] = 0;	for (int j=0; j<BITBLK; j++)		bittab[j] = 0;}void RESearch::Clear() {	for (int i=0; i<MAXTAG; i++) {		delete []pat[i];		pat[i] = 0;		bopat[i] = NOTFOUND;		eopat[i] = NOTFOUND;	}}bool RESearch::GrabMatches(CharacterIndexer &ci) {	bool success = true;	for (unsigned int i=0; i<MAXTAG; i++) {		if ((bopat[i] != NOTFOUND) && (eopat[i] != NOTFOUND)) {			unsigned int len = eopat[i] - bopat[i];			pat[i] = new char[len + 1];			if (pat[i]) {				for (unsigned int j=0; j<len; j++)					pat[i][j] = ci.CharAt(bopat[i] + j);				pat[i][len] = '\0';			} else {				success = false;			}		}	}	return success;}void RESearch::ChSet(char c) {	bittab[((c) & BLKIND) >> 3] |= bitarr[(c) & BITIND];}void RESearch::ChSetWithCase(char c, bool caseSensitive) {	if (caseSensitive) {		ChSet(c);	} else {		if ((c >= 'a') && (c <= 'z')) {			ChSet(c);			ChSet(static_cast<char>(c - 'a' + 'A'));		} else if ((c >= 'A') && (c <= 'Z')) {			ChSet(c);			ChSet(static_cast<char>(c - 'A' + 'a'));		} else {			ChSet(c);		}	}}const char escapeValue(char ch) {	switch (ch) {	case 'a':	return '\a';	case 'b':	return '\b';	case 'f':	return '\f';	case 'n':	return '\n';	case 'r':	return '\r';	case 't':	return '\t';	case 'v':	return '\v';	}	return 0;}const char *RESearch::Compile(const char *pat, int length, bool caseSensitive, bool posix) {	char *mp=nfa;          /* nfa pointer       */	char *lp;              /* saved pointer     */	char *sp=nfa;          /* another one       */	char *mpMax = mp + MAXNFA - BITBLK - 10;	int tagi = 0;          /* tag stack index   */	int tagc = 1;          /* actual tag count  */	int n;	char mask;             /* xor mask -CCL/NCL */	int c1, c2;	if (!pat || !length)		if (sta)			return 0;		else			return badpat("No previous regular expression");	sta = NOP;	const char *p=pat;     /* pattern pointer   */	for (int i=0; i<length; i++, p++) {		if (mp > mpMax)			return badpat("Pattern too long");		lp = mp;		switch(*p) {		case '.':               /* match any char  */			*mp++ = ANY;			break;		case '^':               /* match beginning */			if (p == pat)				*mp++ = BOL;			else {				*mp++ = CHR;				*mp++ = *p;			}			break;		case '$':               /* match endofline */			if (!*(p+1))				*mp++ = EOL;			else {				*mp++ = CHR;				*mp++ = *p;			}			break;		case '[':               /* match char class */			*mp++ = CCL;			i++;			if (*++p == '^') {				mask = '\377';				i++;				p++;			} else				mask = 0;			if (*p == '-') {	/* real dash */				i++;				ChSet(*p++);			}			if (*p == ']') {	/* real brace */				i++;				ChSet(*p++);			}			while (*p && *p != ']') {				if (*p == '-' && *(p+1) && *(p+1) != ']') {					i++;					p++;					c1 = *(p-2) + 1;					i++;					c2 = *p++;					while (c1 <= c2) {						ChSetWithCase(static_cast<char>(c1++), caseSensitive);					}				} else if (*p == '\\' && *(p+1)) {					i++;					p++;					char escape = escapeValue(*p);					if (escape)						ChSetWithCase(escape, caseSensitive);					else						ChSetWithCase(*p, caseSensitive);					i++;					p++;				} else {					i++;					ChSetWithCase(*p++, caseSensitive);				}			}			if (!*p)				return badpat("Missing ]");			for (n = 0; n < BITBLK; bittab[n++] = (char) 0)				*mp++ = static_cast<char>(mask ^ bittab[n]);			break;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精彩视频在线| 欧美一区二区三区系列电影| 国产精品久久二区二区| 99久久精品免费看国产| 亚洲激情在线激情| 精品免费视频一区二区| jlzzjlzz亚洲日本少妇| 九色综合狠狠综合久久| 欧美成人精品1314www| 91伊人久久大香线蕉| 成人精品在线视频观看| 日韩中文欧美在线| 中文一区在线播放| 欧美私人免费视频| 久久99久久久久| 国产精品家庭影院| 成人av在线资源网| 男女男精品网站| 亚洲综合一二三区| 日韩理论片在线| 17c精品麻豆一区二区免费| 久久人人爽爽爽人久久久| 在线综合+亚洲+欧美中文字幕| 99热99精品| 日本韩国精品在线| 欧美丝袜丝交足nylons| 这里只有精品电影| 日韩欧美一区在线观看| 91精品国产麻豆国产自产在线| 欧美日精品一区视频| 91丨porny丨户外露出| 成人亚洲一区二区一| 福利一区二区在线| 成人高清伦理免费影院在线观看| 国产很黄免费观看久久| 国产乱淫av一区二区三区 | 欧美最猛黑人xxxxx猛交| 欧美日韩中文一区| 在线观看91精品国产麻豆| 欧美变态口味重另类| 国产日韩欧美精品电影三级在线| 中文字幕第一区第二区| 中文字幕日本乱码精品影院| 亚洲国产sm捆绑调教视频| 看国产成人h片视频| 成人性生交大片免费| 欧美在线观看视频在线| 久久众筹精品私拍模特| 日韩码欧中文字| 国产高清久久久久| 91精品久久久久久蜜臀| 国产精品美女www爽爽爽| 亚洲第一会所有码转帖| 播五月开心婷婷综合| 精品精品国产高清a毛片牛牛| 综合久久一区二区三区| 国产一区二区中文字幕| 欧美猛男gaygay网站| 国产精品麻豆欧美日韩ww| 久久av老司机精品网站导航| 欧美精品九九99久久| 一区二区三区丝袜| 成人18视频日本| 国产精品毛片久久久久久久| 国产精品一区专区| 国产精品全国免费观看高清 | 宅男在线国产精品| 日韩激情一区二区| 欧美精选一区二区| 亚洲高清不卡在线| 成人国产在线观看| 亚洲欧洲www| 一本一道久久a久久精品综合蜜臀| 中文字幕二三区不卡| 国产精品亚洲成人| 欧美激情一区二区三区四区| 国产69精品久久久久毛片| 精品久久久久香蕉网| 国产一区二区剧情av在线| 亚洲精品在线免费播放| 91免费看片在线观看| 1区2区3区精品视频| 欧美无砖砖区免费| 美女脱光内衣内裤视频久久网站| 91精品国产高清一区二区三区 | 欧美一区二区视频在线观看2022| 舔着乳尖日韩一区| 久久久国产精品麻豆| 国产精品一二三四五| 精品国产电影一区二区| 成人午夜电影网站| 青草国产精品久久久久久| 久久老女人爱爱| 91免费看`日韩一区二区| 免费看日韩a级影片| 亚洲成人午夜影院| 欧美va亚洲va在线观看蝴蝶网| 国产福利91精品一区二区三区| 亚洲欧美成人一区二区三区| 久久综合色鬼综合色| 精品视频在线免费观看| 美女看a上一区| 一区二区三区四区在线免费观看 | 成人午夜在线视频| 日本在线不卡视频| 亚洲最大成人网4388xx| 久久久久久毛片| 精品福利一二区| 精品国产乱码久久久久久图片 | 亚洲精品中文字幕在线观看| **欧美大码日韩| 国产情人综合久久777777| 日韩精品一区二区三区在线观看 | 欧美国产乱子伦| 国产精品久久精品日日| 国产视频一区在线观看| 2020国产精品自拍| 国产精品素人视频| 日本一区二区在线不卡| 国产精品不卡在线观看| 亚洲精品视频在线观看免费| 视频一区在线播放| 一区二区三区电影在线播| 国产精品麻豆99久久久久久| 亚洲专区一二三| 天涯成人国产亚洲精品一区av| 亚洲成年人影院| 国产一区二区三区香蕉| 成人av免费在线观看| 欧美亚洲动漫精品| 666欧美在线视频| 日韩欧美国产一区在线观看| 中文字幕免费在线观看视频一区| 亚洲一区日韩精品中文字幕| 日本免费在线视频不卡一不卡二| 国产一区二区三区久久久| 日本乱人伦一区| 日本一区二区不卡视频| 国产精品电影院| 激情五月婷婷综合| 欧洲一区二区av| 国产精品不卡在线| 免费欧美日韩国产三级电影| www..com久久爱| 国产午夜亚洲精品羞羞网站| 亚州成人在线电影| 色乱码一区二区三区88| 国产日韩精品久久久| 国产风韵犹存在线视精品| 欧美久久久久久久久| 夜色激情一区二区| 欧美系列一区二区| 亚洲欧美日韩国产中文在线| 99精品视频中文字幕| 欧美精品一区二区三区蜜桃视频| 日韩精品亚洲一区二区三区免费| 99精品国产99久久久久久白柏| 91精品国产综合久久香蕉麻豆| 一区二区免费看| 欧美日韩精品一区二区三区四区| 亚洲欧美二区三区| 欧美亚洲自拍偷拍| 亚洲自拍偷拍综合| 欧美日韩一区二区三区在线看| 亚洲高清免费在线| 欧美日韩国产一级片| 伦理电影国产精品| 136国产福利精品导航| 91精品国产综合久久香蕉麻豆| 蜜臀av一区二区在线观看| 日韩精品一区二区三区四区| 激情文学综合网| 伊人夜夜躁av伊人久久| 日韩视频在线永久播放| av激情成人网| 日本亚洲一区二区| 亚洲青青青在线视频| 久久久精品国产免大香伊| 一本大道久久精品懂色aⅴ | 麻豆成人久久精品二区三区红| 国产欧美日本一区视频| 欧美综合一区二区三区| 国产精品一区二区91| 婷婷亚洲久悠悠色悠在线播放| 国产午夜亚洲精品理论片色戒| 欧美日韩不卡一区二区| 日本精品裸体写真集在线观看| 麻豆久久久久久久| 亚洲chinese男男1069| 国产精品丝袜一区| 国产日产亚洲精品系列| 欧美日韩精品系列| 色婷婷综合久久久久中文一区二区 | 成人综合婷婷国产精品久久蜜臀| 日本最新不卡在线| 日韩在线一区二区| 一二三四区精品视频| 亚洲日本在线天堂| 一区二区三区精品视频| 亚洲福利视频一区二区|