// boost_regex_test.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"

#pragma comment(lib,"libboost_regex-vc90-mt-gd-1_43.lib")


#include "boost/regex/v4/regex.hpp"
#include <iostream>
#include <string>
#include "boost/regex/v4/match_results.hpp"
#include "boost/regex/v4/regex_split.hpp"

//#include ""
using namespace std;


void xxxx()
{
	boost::regex reg("(new)|(delete)"); 
	boost::smatch m; 
//	boost::match_results mrs;
	std::string s= "Calls to new must be (delete delete) followed by delete. / Calling simply new results in a leak!"; 
	if (boost::regex_search(s,m,reg)) {
		// Did new match? 
		if (m[1].matched) 
			std::cout << "The expression (new) matched!/n"; 
		if (m[2].matched) 
			std::cout << "The expression (delete) matched!/n"; } 
}


//替换字符串函数
void  string_replace( std::string &strBig,const std::string &strsrc,const std::string &strdst )  
{  
	std::string::size_type pos = 0;  
	std::string::size_type srclen = strsrc.size();  
	std::string::size_type dstlen = strdst.size();  

	while( (pos=strBig.find(strsrc,pos)) != std::string::npos )  
	{  
		strBig.replace( pos,srclen,strdst );  
		pos += dstlen;  
	}  
}  


void ForRegexTest2()
{
	//?和*给非程序人员定义的通配符
	std::string iniStr("s?h?i?t*on y*o*u");
	std::string exprEvaluatedFromIniStr(iniStr);
	//在这里把通配符替换成正则表达式语法
	string_replace(exprEvaluatedFromIniStr,string("?"),string(".{0,6}"));
	string_replace(exprEvaluatedFromIniStr,string("*"),1}"));

	boost::regex expression(exprEvaluatedFromIniStr,boost::regex::perl | boost::regex::icase);
	boost::smatch what;
	std::string instr("xx dfd sxh i~t hahahahah shit on y o u");
	if (boost::regex_search(instr,what,expression))
	{
		size_t tmpSize = what.size();
		for (size_t i = 0; i < what.size(); ++i)
		{
			cout<< "Match String: " << what[i].str() << endl;
			cout << "Match Position: " << what.position(i) << endl;
			cout << "matchResults prefix: " << what.prefix() << endl;
			cout << "matchResults suffix: " << what.suffix() << endl;
			cout << "After first found string: " << instr.substr(what.position(i) + what.length(i)) << endl;

			std::string mingganci(what[i]);
			size_t foundPos = instr.find(mingganci);
			instr.replace(foundPos,mingganci.length(),'*');
			 
			std::cout<<instr<<std::endl;
		}
	}
}

int _tmain(int argc,_TCHAR* argv[])
{
	ForRegexTest2();

	return 0;
}


20140122: 这两天研究了一下正则表达式,备忘之 ...

正则表达式备忘录的更多相关文章

  1. HTML5数字输入仅接受整数的实现代码

    这篇文章主要介绍了HTML5数字输入仅接受整数的实现代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  2. ios8 – iOS 8上的ptrace

    我试图在ptrace上调用一个像thisptrace一样的函数;但是当我尝试使用#include导入它时,Xcode会给我一个错误’sys/ptrace.h’文件找不到.我错过了什么,我是否需要导入一个库,或者这在iOS上根本不可用?

  3. ios – 使用大写符号在字符串swift中获取URL的正则表达式

    我尝试在文本中获取URL.所以,在此之前,我使用了这样一个表达式:但是当用户输入带有大写符号的URL时(例如Http://Google.com,它与它不匹配)我遇到了问题.我试过了:但什么都没发生.解决方法您可以使用正则表达式中的i内联标志关闭区分大小写,有关可用正则表达式功能的详细信息,请参阅FoundationFrameworkReference.(?ismwx-ismwx)Flagsetti

  4. ios – 如何在Swift 3中使用正则表达式?

    解决方法我相信.当没有其他选项适用时,将使用.allZeros.因此,使用Swift3,您可以传递一个空的选项列表或省略options参数,因为它默认为无选项:要么请注意,在Swift3中,您不再使用error参数.它现在抛出.

  5. ios – lldb断点在类目标c中的所有方法

    如何使用lldb在ObjectiveC类中的所有方法上自动设置断点?

  6. 在编译时编译Xcode中的C类错误:stl vector

    我有一个C类,用gcc和可视化工作室中的寡妇在linux上编译.boid.h:并在boid.cpp中:但是,当我在Xcode中编译此代码时,我收到以下错误:有任何想法吗?我以为你可以使用C/C++代码并在Xcode中编译没有问题?.m文件被视为具有Objective-C扩展名的.c文件..mm文件被视为具有Objective-C扩展名的.cpp文件,那么它被称为Objective-C只需将.m文件重命名为.mm,右键单击或按住Ctrl键并在Xcode中的文件中选择重命名.

  7. 如何从Haxe创建iOS-和OSX-库并在本机应用程序中使用它?

    我有一个在Haxe上编写自己的协议,数据结构和逻辑的跨平台实现.如何在iOS和OSX的企业应用程序中构建和使用它?

  8. swift的正则表达式(NSRegularExpression)

    init(_pattern:String){varerror:NSError?

  9. swift 正则表达式运用实例选自《swifter 100个swift开发必备tip 》

  10. Swift截取HTML中的所有图片url

    在Swift中,要从HTML格式的String中截取出所有的img的所有图片url,要截取的url就要匹配url,需要用到正则表达式。

随机推荐

  1. 法国电话号码的正则表达式

    我正在尝试实施一个正则表达式,允许我检查一个号码是否是一个有效的法国电话号码.一定是这样的:要么:这是我实施的但是错了……

  2. 正则表达式 – perl分裂奇怪的行为

    PSperl是5.18.0问题是量词*允许零空间,你必须使用,这意味着1或更多.请注意,F和O之间的空间正好为零.

  3. 正则表达式 – 正则表达式大于和小于

    我想匹配以下任何一个字符:或=或=.这个似乎不起作用:[/]试试这个:它匹配可选地后跟=,或者只是=自身.

  4. 如何使用正则表达式用空格替换字符之间的短划线

    我想用正则表达式替换出现在带空格的字母之间的短划线.例如,用abcd替换ab-cd以下匹配字符–字符序列,但也替换字符[即ab-cd导致d,而不是abcd,因为我希望]我如何适应以上只能取代–部分?

  5. 正则表达式 – /bb | [^ b] {2} /它是如何工作的?

    有人可以解释一下吗?我在t-shirt上看到了这个:它似乎在说:“成为或不成为”怎么样?我好像没找到’e’?

  6. 正则表达式 – 在Scala中验证电子邮件一行

    在我的代码中添加简单的电子邮件验证,我创建了以下函数:这将传递像bob@testmymail.com这样的电子邮件和bobtestmymail.com之类的失败邮件,但是带有空格字符的邮件会漏掉,就像bob@testmymail也会返回true.我可能在这里很傻……当我测试你的正则表达式并且它正在捕捉简单的电子邮件时,我检查了你的代码并看到你正在使用findFirstIn.我相信这是你的问题.findFirstIn将跳转所有空格,直到它匹配字符串中任何位置的某个序列.我相信在你的情况下,最好使用unapp

  7. 正则表达式对小字符串的暴力

    在测试小字符串时,使用正则表达式会带来性能上的好处,还是会强制它们更快?不会通过检查给定字符串的字符是否在指定范围内比使用正则表达式更快来强制它们吗?

  8. 正则表达式 – 为什么`stoutest`不是有效的正则表达式?

    isthedelimiter,thenthematch-only-onceruleof?PATTERN?

  9. 正则表达式 – 替换..与.在R

    我怎样才能替换..我尝试过类似的东西:但它并不像我希望的那样有效.尝试添加fixed=T.

  10. 正则表达式 – 如何在字符串中的特定位置添加字符?

    我正在使用记事本,并希望使用正则表达式替换在字符串中的特定位置插入一个字符.例如,在每行的第6位插入一个逗号是什么意思?如果要在第六个字符后添加字符,请使用搜索和更换从技术上讲,这将用MatchGroup1替换每行的前6个字符,后跟逗号.

返回
顶部