C++ regular expression, study notes

The first note:

/*regular experssion grammars:
ECMAScript最powerful,也是下面用的
basic
extended
awk
grep
egrep
*/
#include
#include
using namespace std;
int main(){//基本查找匹配
	string t;
	while(1){
		cin>>t;
	try {// http://www.cplusplus.com/reference/regex/ECMAScript规范的连接地址
//		regex e("ab"); //表示只匹配ab
//		regex e("ab.",regex_constants::icase);//. 表示后面只能是一个字符,除了空行  ,icase可以忽略大小写
//      regex e("abc?"); //?表示最后一个字符,可以有可无
//		regex e("abc*");//*表示最后一个字符可有可无,并且后面可以接无数个字符
//		regex e("abc+");//+ 表示最后一个字符必须有,并且最后一个字符可以重复出现
//		regex e("abc[def]");//[]  表示括号内的字符,只能选一个,并且不能不选
//		regex e("abc[def]*");//表示只能“ 匹配abc,然后后一位必须从[]中选或者abc后面直接为0,再后面的字符就不限制
//		regex e("abc[^def]*");//正好相反,表示[]内不能匹配
//		regex e("abc[abc]{5}");//{} 表示后面有几位字符。这里的意思是abc后面的5位字符必须从[]选
//		regex e("abc|yuan[fang]");// | 是或的意思。 这里abc, 或者yuan[fang], 
//		regex e("abc|yuan[fang\]]");//\]可以用转义字符 
//		regex e("(abc)de+(yuan)\\1\\2");//()表示一个组,后面\\1,\\2表示第组。 这里匹配上的例子为:abcdee...eeyuanabcyuan
		//regex e("[[:w:]]+@[[:w:]]+.com");//匹配邮箱, [[:w:]] 是word character:digital,number,or underscore
		   //http://www.cplusplus.com/reference/regex/ECMAScript规范的连接地址

		//bool match = regex_match(t,e);//这里是匹配整个的字符串

		//regex e("ab.",regex_constants::icase);//. 表示后面只能是一个字符,除了空行  ,icase可以忽略大小写
		//regex e("^ab.",regex_constants::icase);//^ 这里会搜索,ab是字符串的开头
		regex e("ab.$",regex_constants::icase);//$ 这里会搜索,ab是字符串的结尾
		bool match = regex_search(t, e); //是匹配子字符串
		cout<<(match?"Matched":"Unmatched")<

The second note

#include
#include
using namespace std;

int main(){//提取匹配的值

	string t;

	while(1){		
		cin>>t;
		smatch m;  //typedef std::match_results
		try {
			regex e("([[:w:]]+)@([[:w:]]+).com");//首先对要提取的字符串分组()
			bool match = regex_search(t, m, e); //是匹配子字符串,匹配的值会放到smatch中
			cout<<"msize="<
C++ regular expression, study notes_第1张图片


你可能感兴趣的:(C,and,C,Plus,Plus)