文章定位:初学者写坑
关于正则表达式的基础,请参考 http://rubular.com/
关于函数解释,请参考 http://man7.org/linux/man-pages/man3/regex.3.html
自己写了段小代码,从URL中提取处主机域名和剩余部分。
#include<syspes.h>
#include<regex.h>
#include<stdio.h>
#include<string.h>
int main(int argc, char **argv) //传入待匹配字符串
{
if(argc < 2){ //输入错误
puts("bad input");
return 0;
}
regmatch_t pmatch[100]; //匹配结果
regex_t reg;
char * pattern = "(https?:(//)?)?([^/]*)(.*)"; //正则表达式
int i = 0;
char buf[100];
int res = regcomp(®, pattern, REG_EXTENDED | REG_NEWLINE); //将正则表达式编译成适合regexec执行的形式
if(res) { //出错,错误信息输出
switch(res){
default : puts("unknown regcomp error");break;
case REG_BADBR: puts("REG_BADBR"); break;
case REG_BADPAT: puts("REG_BADPAT"); break;
case REG_BADRPT: puts("REG_BADRPT"); break;
case REG_EBRACE: puts("REG_EBRA