c++ 正则表达式

c++ 实现字符串正则表达式匹配的几个demo.



#include<iostream>
#include <regex>

int main()
{
	//完全匹配
	std::cout << "完全匹配:" << std::endl;
	std::string str = "1.325"; std::regex regexnum("[-+]?[0-9.,]*");
	if (std::regex_match(str, regexnum))
		std::cout << "matck success " << str << std::endl;
	//部分匹配 
	std::cout << "部分匹配:" << std::endl;
	str = "qwe345ccc 22rtrey";
	std::regex pattern("(\\D*)(-?[0-9.,]*)([^ ]*)");
	std::string tmp = std::regex_replace(str, pattern, "$2");//$2表示匹配第二个子表达式的字符串
	if ("" != tmp)std::cout << tmp << std::endl;//输出所有的匹配的字符串
	std::smatch result;
	bool match = std::regex_search(str, result, pattern);
	if (match && result.size() >= 3)
		std::cout << result[2] << std::endl;//result[2]表示输出匹配第二个表达式的字符串
        //将匹配部分逐个输出
        str = "#document plan1 \n qwrwqtgsav \n #document ";
        std::regex pattern1("(#document)([ ]?)([\\w]*)");
        const std::sregex_token_iterator end;  //需要注意一下这里
        for (std::sregex_token_iterator i(str.begin(), str.end(), pattern1); i != end; ++i)
        {
                std::string asda = *i;
                std::cout << *i << std::endl;
        }
        return 0;}
 

 

output:

完全匹配:
matck success 1.325
部分匹配:
34522
345



参考:

http://www.cplusplus.com/reference/regex/regex_replace/

http://blog.sina.com.cn/s/blog_ac9fdc0b0101oow9.html

http://www.2cto.com/kf/201402/277287.html

http://www.cnblogs.com/zhuyp1015/archive/2012/04/08/2438232.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值