69,336
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <string.h>
#include "regex.h"
int main(int argc, char *argv[])
{
int len;
regex_t re;
regmatch_t subs[25];
char matched[1024];
char errbuf[128];
int err = 0, i = 0;
char src[1024] = { "we12312332qwwww d1246Xdes" };
char pattern[1024] = { "\[0-9]{4}" };
/*编译正则表达式*/
err = regcomp(&re, pattern, REG_EXTENDED);
if (err)
{
len = regerror(err, &re, errbuf, sizeof(errbuf));
printf("error: regcomp: %s\r\n", errbuf);
return 1;
}
printf("Total has subexpression: %d\n", re.re_nsub);
/*执行模式匹配*/
err = regexec(&re, src, 25, subs, 0);
if (err == REG_NOMATCH)
{
printf("no match...\r\n");
regfree(&re);
return 0;
}
else if (err)
{
len = regerror(err, &re, errbuf, sizeof(errbuf));
printf("error: regexec: %s\r\n", errbuf);
return 1;
}
printf("OK , has matched...\r\n");
for (i = 0; i <= re.re_nsub; i++)
{
len = subs[i].rm_eo - subs[i].rm_so;
if (0 == i)
{
printf("begin: %d, len = %d \r\n",subs[i].rm_so, len);
}
else
{
printf("subexpression %d begin: %d, len = %d ", i, subs[i].rm_so, len);
}
memcpy(matched, src + subs[i].rm_so, len);
matched[len] = '\0';
printf("match: %s\n", matched);
}
regfree(&re);
return 0;
}
#include <iostream>
#include <string>
#include <regex>
using namespace std;
int main() {
string s("we12312332qwwww d1246Xdes");
cout << s << endl;
cout << "----" << endl;
regex e("[0-9]{4}");
smatch m;
while (regex_search (s,m,e)) {
cout << m.str() << endl;
s = m.suffix().str();
}
return 0;
}
//we12312332qwwww d1246Xdes
//----
//1231
//2332
//1246
//
正则表达式速查 正则表达式举例 正则表达式学习 (4页A4纸)http://download.csdn.net/detail/zhao4zhong1/1808549
#include <iostream>
#include <string>
#include <regex>
using namespace std;
int main() {
string s("deabc\ndeab\ndefabc");
cout << s << endl;
cout << "----" << endl;
regex e("abc$");
smatch m;
while (regex_search (s,m,e)) {
cout << m.str() << endl;
s = m.suffix().str();
}
return 0;
}
//deabc
//deab
//defabc
//----
//abc
//abc
//