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

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

?? regularexpression.cpp

?? IBM的解析xml的工具Xerces的源代碼
?? CPP
?? 第 1 頁 / 共 4 頁
字號:
// ---------------------------------------------------------------------------XMLCh* RegularExpression::replace(const XMLCh* const matchString,                                   const XMLCh* const replaceString){  return replace(matchString, replaceString, 0,                  XMLString::stringLen(matchString));}XMLCh* RegularExpression::replace(const XMLCh* const matchString,                                    const XMLCh* const replaceString,                                  const int start, const int end){  //check if matches zero length string - throw error if so  if (matches(XMLUni::fgZeroLenString, fMemoryManager)){		ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Regex_RepPatMatchesZeroString, fMemoryManager);  }        RefVectorOf<Match> *subEx = new (fMemoryManager) RefVectorOf<Match>(10, true, fMemoryManager);	  Janitor<RefVectorOf<Match> > janSubEx(subEx);  //Call to tokenize with Match vector so that we keep track of the locations  //of the subExpression within each of the matches  RefArrayVectorOf<XMLCh>* tokenStack = tokenize(matchString, start, end, subEx);	  Janitor<RefArrayVectorOf<XMLCh> > janTokStack(tokenStack);      XMLBuffer result(1023, fMemoryManager);    int numSubEx = 0;    if (subEx && subEx->size() > 0)    numSubEx = subEx->elementAt(0)->getNoGroups() - 1;    int tokStackSize = tokenStack->size();  const XMLCh* curRepString = XMLString::replicate(replaceString, fMemoryManager);      for (int i = 0; i < tokStackSize; i++){          result.append(tokenStack->elementAt(i));      if (i != tokStackSize - 1) {             //if there are subExpressions, then determine the string we want to       //substitute in.        if (numSubEx != 0) {            fMemoryManager->deallocate((XMLCh*)curRepString);            curRepString = subInExp(replaceString, matchString, subEx->elementAt(i));             }      result.append(curRepString);    }  }        fMemoryManager->deallocate((XMLCh*)curRepString);  return XMLString::replicate(result.getRawBuffer(), fMemoryManager);     }// ---------------------------------------------------------------------------//  RegularExpression: Helpers methods// ---------------------------------------------------------------------------int RegularExpression::getOptionValue(const XMLCh ch) {	int ret = 0;	switch (ch) {		case chLatin_i:			ret = IGNORE_CASE;			break;		case chLatin_m:			ret = MULTIPLE_LINE;			break;		case chLatin_s:			ret = SINGLE_LINE;			break;		case chLatin_x:			ret = EXTENDED_COMMENT;			break;		case chLatin_u:			ret = USE_UNICODE_CATEGORY;			break;		case chLatin_w:			ret = UNICODE_WORD_BOUNDARY;			break;		case chLatin_F:			ret = PROHIBIT_FIXED_STRING_OPTIMIZATION;			break;		case chLatin_H:			ret = PROHIBIT_HEAD_CHARACTER_OPTIMIZATION;			break;		case chLatin_X:			ret = XMLSCHEMA_MODE;			break;		case chComma:			ret = SPECIAL_COMMA;			break;		default:			break;	}	return ret;}int RegularExpression::match(Context* const context, const Op* const operations							 , int offset, const short direction){	const Op* tmpOp = operations;	bool ignoreCase = isSet(fOptions, IGNORE_CASE);	while (true) {		if (tmpOp == 0)			break;		if (offset > context->fLimit || offset < context->fStart)			return -1;		switch(tmpOp->getOpType()) {		case Op::O_CHAR:			if (!matchChar(context, tmpOp->getData(), offset, direction,						   ignoreCase))				return -1;			tmpOp = tmpOp->getNextOp();			break;		case Op::O_DOT:			if (!matchDot(context, offset, direction))				return -1;			tmpOp = tmpOp->getNextOp();			break;		case Op::O_RANGE:		case Op::O_NRANGE:			if (!matchRange(context, tmpOp, offset, direction, ignoreCase))				return -1;			tmpOp = tmpOp->getNextOp();			break;		case Op::O_ANCHOR:			if (!matchAnchor(context, tmpOp->getData(), offset))				return -1;			tmpOp = tmpOp->getNextOp();			break;		case Op::O_BACKREFERENCE:			if (!matchBackReference(context, tmpOp->getData(), offset,									direction, ignoreCase))				return -1;			tmpOp = tmpOp->getNextOp();			break;		case Op::O_STRING:			if (!matchString(context, tmpOp->getLiteral(), offset, direction,							 ignoreCase))				return -1;			tmpOp = tmpOp->getNextOp();			break;		case Op::O_CLOSURE:			{				XMLInt32 id = tmpOp->getData();				if (id >= 0) {					int prevOffset = context->fOffsets[id];					if (prevOffset < 0 || prevOffset != offset) {						context->fOffsets[id] = offset;					}					else {						context->fOffsets[id] = -1;						tmpOp = tmpOp->getNextOp();						break;					}				}				int ret = match(context, tmpOp->getChild(), offset, direction);				if (id >= 0) {					context->fOffsets[id] = -1;				}				if (ret >= 0)					return ret;				tmpOp = tmpOp->getNextOp();			}			break;		case Op::O_QUESTION:			{				int ret = match(context, tmpOp->getChild(), offset, direction);				if (ret >= 0)					return ret;				tmpOp = tmpOp->getNextOp();			}			break;		case Op::O_NONGREEDYCLOSURE:		case Op::O_NONGREEDYQUESTION:			{				int ret = match(context,tmpOp->getNextOp(),offset,direction);				if (ret >= 0)					return ret;				tmpOp = tmpOp->getChild();			}			break;		case Op::O_UNION:			{				return matchUnion(context, tmpOp, offset, direction);			}		case Op::O_CAPTURE:			if (context->fMatch != 0 && tmpOp->getData() != 0)				return matchCapture(context, tmpOp, offset, direction);			tmpOp = tmpOp->getNextOp();			break;		case Op::O_LOOKAHEAD:			if (0 > match(context, tmpOp->getChild(), offset, 1))				return -1;			tmpOp = tmpOp->getNextOp();			break;		case Op::O_NEGATIVELOOKAHEAD:			if (0 <= match(context, tmpOp->getChild(), offset, 1))				return -1;			tmpOp = tmpOp->getNextOp();			break;		case Op::O_LOOKBEHIND:			if (0 > match(context, tmpOp->getChild(), offset, -1))				return - 1;			tmpOp = tmpOp->getNextOp();			break;		case Op::O_NEGATIVELOOKBEHIND:			if (0 <= match(context, tmpOp->getChild(), offset, -1))				return -1;			tmpOp = tmpOp->getNextOp();			break;		case Op::O_INDEPENDENT:        case Op::O_MODIFIER:			{				int ret = (tmpOp->getOpType() == Op::O_INDEPENDENT)					   ? match(context, tmpOp->getChild(), offset, direction)                       : matchModifier(context, tmpOp, offset, direction);                if (ret < 0)                    return ret;				offset = ret;				tmpOp = tmpOp->getNextOp();			}			break;		case Op::O_CONDITION:			if (tmpOp->getRefNo() >= fNoGroups)				return -1;			if (matchCondition(context, tmpOp, offset, direction))				tmpOp = tmpOp->getYesFlow();			else				if (tmpOp->getNoFlow() != 0)                    tmpOp = tmpOp->getNoFlow();                else                    tmpOp = tmpOp->getNextOp();			break;		}	}		return offset;}bool RegularExpression::matchChar(Context* const context,								  const XMLInt32 ch, int& offset,								  const short direction, const bool ignoreCase){	int tmpOffset = direction > 0 ? offset : offset - 1;	if (tmpOffset >= context->fLimit || tmpOffset < 0)		return false;	XMLInt32 strCh = 0;		if (!context->nextCh(strCh, tmpOffset, direction))		return false;	bool match = ignoreCase ? matchIgnoreCase(ch, strCh)		                    : (ch == strCh);	if (!match)		return false;	offset = (direction > 0) ? ++tmpOffset : tmpOffset;	return true;}bool RegularExpression::matchDot(Context* const context, int& offset,								 const short direction){	int tmpOffset = direction > 0 ? offset : offset - 1;	if (tmpOffset >= context->fLimit || tmpOffset < 0)		return false;	XMLInt32 strCh = 0;		if (!context->nextCh(strCh, tmpOffset, direction))		return false;	if (!isSet(fOptions, SINGLE_LINE)) {		if (direction > 0 && RegxUtil::isEOLChar(strCh))			return false;		if (direction <= 0 && !RegxUtil::isEOLChar(strCh) )			return false;	}    offset = (direction > 0) ? ++tmpOffset : tmpOffset;	return true;}bool RegularExpression::matchRange(Context* const context, const Op* const op,								   int& offset, const short direction,								   const bool ignoreCase){	int tmpOffset = direction > 0 ? offset : offset - 1;	if (tmpOffset >= context->fLimit || tmpOffset < 0)		return false;	XMLInt32 strCh = 0;		if (!context->nextCh(strCh, tmpOffset, direction))		return false;	RangeToken* tok = (RangeToken *) op->getToken();	bool match = false;	if (ignoreCase) {		//REVISIT we should match ignoring case, but for now		//we will do a normal match		//tok = tok->getCaseInsensitiveToken();		//if (!token->match(strCh)) {		//	if (strCh > 0x10000)		//		return -1;			// Do case insensitive matching - uppercase match			// or lowercase match		//}		match = tok->match(strCh);	}	else		match = tok->match(strCh);	if (!match)		return false;	offset = (direction > 0) ? ++tmpOffset : tmpOffset;	return true;}bool RegularExpression::matchAnchor(Context* const context, const XMLInt32 ch,									const int offset){	switch ((XMLCh) ch) {	case chLatin_A:		if (offset != context->fStart)			return false;		break;	case chLatin_B:		if (context->fLength == 0)			break;		{			int after = getWordType(context->fString, context->fStart,									context->fLimit, offset);			if (after == WT_IGNORE				|| after == getPreviousWordType(context->fString,												context->fStart,												context->fLimit, offset))				break;		}		return false;	case chLatin_b:		if (context->fLength == 0)			return false;		{			int after = getWordType(context->fString, context->fStart,									context->fLimit, offset);			if (after == WT_IGNORE				|| after == getPreviousWordType(context->fString,												context->fStart												, context->fLimit, offset))				return false;		}		break;	case chLatin_Z:	case chDollarSign:		if ( (XMLCh) ch == chDollarSign && isSet(fOptions, MULTIPLE_LINE)) {			if (!(offset == context->fLimit || (offset < context->fLimit				&& RegxUtil::isEOLChar(context->fString[offset]))))				return false;		}		else {			if (!(offset == context->fLimit				|| (offset+1 == context->fLimit				    && RegxUtil::isEOLChar(context->fString[offset]))				|| (offset+2 == context->fLimit				    && context->fString[offset] == chCR					&& context->fString[offset+1] == chLF)))				return false;		}		break;	case chLatin_z:		if (offset != context->fLimit)			return false;		break;	case chAt:	case chCaret:		if ( (XMLCh) ch == chCaret && !isSet(fOptions, MULTIPLE_LINE)) {			if (offset != context->fStart)				return false;		}		else {			if (!(offset == context->fStart || (offset > context->fStart				      && RegxUtil::isEOLChar(context->fString[offset-1]))))				return false;		}		break;	case chOpenAngle:		if (context->fLength == 0 || offset == context->fLimit)			return false;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
6080yy午夜一二三区久久| 日韩免费高清视频| 91精品国产欧美一区二区成人| 欧美videos中文字幕| 亚洲美女视频一区| 国产精品亚洲第一区在线暖暖韩国| 91成人网在线| 国产精品欧美极品| 国精产品一区一区三区mba桃花 | 亚洲精品国产高清久久伦理二区| 日韩综合一区二区| 91成人在线精品| 亚洲欧洲日产国码二区| 国产九九视频一区二区三区| 欧美精品在欧美一区二区少妇| 中文字幕永久在线不卡| 成人性生交大片免费看视频在线 | 99re视频精品| 国产欧美日韩另类一区| 国精产品一区一区三区mba视频| 欧美日韩不卡在线| 亚洲中国最大av网站| 成人av影视在线观看| 国产午夜精品理论片a级大结局 | 亚洲欧美日韩久久精品| gogo大胆日本视频一区| 欧美国产日产图区| 色爱区综合激月婷婷| 国产精品美女久久久久久久久久久 | 欧美日韩精品系列| 亚洲精品欧美二区三区中文字幕| 国产91丝袜在线播放九色| 精品国产一区久久| 久久精品国产秦先生| 日韩无一区二区| 男人的天堂久久精品| 这里只有精品免费| 日韩1区2区日韩1区2区| 欧美日本一区二区| 午夜av电影一区| 日韩免费高清视频| 国产精品伊人色| 国产精品女上位| 欧洲一区在线观看| 五月天国产精品| 日韩精品最新网址| 国产精品资源网站| 亚洲色大成网站www久久九九| 94色蜜桃网一区二区三区| 亚洲精品国产一区二区精华液| 欧美日韩日日摸| 老司机精品视频在线| 久久精品视频在线免费观看| 国产传媒久久文化传媒| 一色屋精品亚洲香蕉网站| 在线免费av一区| 免费国产亚洲视频| 亚洲国产精品精华液ab| 在线中文字幕不卡| 久久99热这里只有精品| 日韩一区中文字幕| 7878成人国产在线观看| 国产成人av福利| 亚洲韩国一区二区三区| 精品国产乱码久久久久久老虎| 国产精品资源网站| 亚洲国产sm捆绑调教视频| 日韩欧美国产小视频| 成人性生交大片免费看视频在线 | 欧美激情一区二区三区全黄| 欧美亚洲一区二区三区四区| 日产精品久久久久久久性色| 国产欧美精品国产国产专区| 在线免费视频一区二区| 国产精品影视网| 亚洲国产一区视频| 国产精品丝袜在线| 日韩一区二区三区电影 | 国产一区二区在线电影| 亚洲精品国产精华液| 亚洲精品一区二区三区香蕉| 色狠狠桃花综合| 国产麻豆精品久久一二三| 一区二区三区成人在线视频| 国产午夜亚洲精品不卡| 欧美精品日韩精品| 国产午夜久久久久| 日韩午夜激情av| 在线国产亚洲欧美| 东方aⅴ免费观看久久av| 视频一区二区中文字幕| 中文字幕综合网| 国产日韩av一区| 欧美va亚洲va香蕉在线| 欧美三级电影一区| 色综合久久88色综合天天免费| 国产成人免费视频一区| 极品少妇xxxx精品少妇| 免费一级片91| 午夜精品久久久久久久久久久| 中文字幕一区不卡| 国产精品人人做人人爽人人添| 日韩欧美一级片| 欧美一区永久视频免费观看| 欧美日韩一级大片网址| 在线免费观看日本一区| 91丨国产丨九色丨pron| 成人av在线观| jizz一区二区| 91女厕偷拍女厕偷拍高清| av亚洲精华国产精华精华| 成人黄色a**站在线观看| 成人性生交大片免费看中文网站| 丰满少妇在线播放bd日韩电影| 国产在线视频精品一区| 国产专区综合网| 国产成人自拍在线| 成人综合激情网| 99久久精品国产导航| 色综合激情五月| 欧美三级在线播放| 91精品免费在线| 精品国产自在久精品国产| 26uuu欧美| 国产精品三级视频| 一区二区三区国产精品| 香蕉加勒比综合久久| 日韩中文字幕麻豆| 国产一区三区三区| 9l国产精品久久久久麻豆| 91黄色小视频| 日韩一区二区精品在线观看| 精品福利视频一区二区三区| 国产午夜精品久久久久久久 | 精品国产乱码久久久久久免费| 欧美精品一区二区三区蜜桃视频 | 日韩无一区二区| 中文字幕不卡的av| 亚洲精品国产第一综合99久久 | 日韩一级完整毛片| 久久精品人人做人人爽97| 国产精品久久久久久一区二区三区 | 久久精品72免费观看| 日韩欧美综合一区| 蜜桃视频一区二区三区在线观看| 欧美色图激情小说| 日韩欧美国产精品一区| 国产亚洲精品aa| 久久久亚洲高清| 午夜欧美在线一二页| 91国产免费观看| 亚洲欧美日韩小说| 99久久久免费精品国产一区二区| 久久久久综合网| 国产制服丝袜一区| 久久综合99re88久久爱| 蜜桃av噜噜一区| 日韩欧美黄色影院| 欧美aⅴ一区二区三区视频| 欧美日韩高清一区二区| 亚洲777理论| 欧美日韩国产天堂| 亚洲一二三四久久| 欧美吞精做爰啪啪高潮| 亚洲乱码国产乱码精品精的特点| 成人国产亚洲欧美成人综合网| 国产亚洲污的网站| 粉嫩嫩av羞羞动漫久久久| 久久精品人人做人人综合| 国产成人福利片| 中文字幕的久久| 99久久99久久久精品齐齐| 亚洲色图欧美偷拍| 在线观看日韩高清av| 亚洲午夜久久久久久久久电影网 | 久久日一线二线三线suv| 国产米奇在线777精品观看| 精品成a人在线观看| 国产成人午夜精品影院观看视频| 国产精品婷婷午夜在线观看| 97久久超碰国产精品电影| 亚洲黄色尤物视频| 欧美视频在线一区| 蜜桃一区二区三区在线观看| 久久综合九色综合欧美98| 国产精品一区二区91| 日本一区二区视频在线观看| 99久久伊人精品| 亚洲第一精品在线| 精品免费国产二区三区| 国产一区高清在线| 亚洲三级电影全部在线观看高清| 色呦呦日韩精品| 奇米精品一区二区三区四区| 久久这里只有精品首页| 99久久国产免费看| 日韩成人午夜电影| 久久久99精品久久| 91成人国产精品| 精久久久久久久久久久|