⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 example.cpp

📁 我想很多人都用过一些成熟库的正则表达式
💻 CPP
字号:
// example.cpp
// 
// 正则表达式解析库演示
// 
// 与2004年在北京写于创意鹰翔公司
// 版权申明:
// 作者放弃除著作署名权之外的任何权益。你可以在保留此申明的前提下,自由的,无限制的
// 分发、修改和使用本函数库。
// 如果你有任何建议和BUG汇报,欢迎你联系原始作者:tearshark@eaglefly.com.cn
//
// 原始作者 : lanzhengpeng(兰征鹏)
// Modify time : 2004-6-15   18:52
// 历史: 参看re_history.txt
//-----------------------------------------------------------------------------

#include <iostream>
#include <strstream>

#pragma warning(disable : 4786)

#include "regular.h"

std::string _get_cpp_string_with_comment(const unsigned char * psz)
{
	re_pattern	p;
	p.parse((unsigned char *)"({\\s}([ \\t\\r\\n]*(\\o|\\p)[ \\t\\r\\n]*)*)+",NULL,VFX::rf_return);

	re_result	r;
	p.match((unsigned char *)psz,r);

	std::strstream strio;
	strio << "\"";
	for(size_t i=0; i<r.GroupCount(); ++i)
	{
		re_match mch = r[i];
		if(mch.id == 0)
		{
			for(const unsigned char * sz=mch.begin+1; sz<mch.end-1; ++sz)
				strio << *sz;
		}
	}
	strio << "\"";
	return std::string(strio.str(),strio.pcount());
}

int main()
{

	std::string str(
			"\"\\r\"							// return\r\n"
			"\"\\t\"							// tab\r\n"
			"\"\\r?\\n\"							// newline\r\n"
			"\"[a-zA-Z0-9]\"						// alpha numeric\r\n"
			"\"[ \\t]\"							// white space (blank)\r\n"
			"\"[a-zA-Z]\"						// alpha\r\n"
			"\"[0-9]\"							// digit\r\n"
			"\"[0-9a-fA-F]\"						// hex digit\r\n"
			"\"(\\\"[^\\\"]*\\\")|(\'[^\']*\')\"				// quoted string\r\n"
			"/*no implement*/\"test\"					// all right\r\n"
			"\"[a-zA-Z]+\"						// simple word\r\n"
			"\"[0-9]+\"						// integer\r\n"
		);
	std::cout << str << std::endl;
	std::cout << _get_cpp_string_with_comment((unsigned char *)str.c_str());
	std::cout << std::endl;
	
	re_pattern	p;
	p.parse((unsigned char *)"\\q",NULL);

	re_result	r;
	p.match((unsigned char *)"\"ABCCC\\\"ADFSD\"",r);

    return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -