linux c 中文匹配,linux c与正则表达式

#include

;

#include

;

#include ;

#include

static char* substr(const

char*str, unsigned start, unsigned end)

{

unsigned n =

end - start;

static

char stbuf[256];

strncpy(stbuf, str + start, n);

stbuf[n] = 0;

return

stbuf;

}

int main(int argc, char** argv)

{

char *

pattern;

int x, z,

lno = 0, cflags = 0;

char

ebuf[128], lbuf[256];

regex_t reg;

regmatch_t pm[10];

const size_t

nmatch = 10;

pattern = argv[1];

z = regcomp(&reg, pattern,

cflags);

if (z !=

0){

regerror(z,

&reg, ebuf, sizeof(ebuf));

fprintf(stderr, "%s: pattern '%s' \n", ebuf, pattern);

return 1;

}

while(fgets(lbuf, sizeof(lbuf), stdin)) {

++lno;

if ((z = strlen(lbuf)) >

0

&& lbuf[z-1] == '\n')

lbuf[z -

1] = 0;

z =

regexec(&reg, lbuf, nmatch, pm, 0);

if (z == REG_NOMATCH) continue;

else if

(z != 0) {

regerror(z, &reg, ebuf, sizeof(ebuf));

fprintf(stderr, "%s:

regcom('%s')\n", ebuf, lbuf);

return 2;

}

for (x = 0; x < nmatch

&& pm[x].rm_so != -1; ++ x) {

if (!x) printf("d: %s\n", lno, lbuf);

printf(" $%d='%s'\n", x, substr(lbuf, pm[x].rm_so, pm[x].rm_eo));

}

}

regfree(&reg);

return

0;

}

编译执行

bitwangbin@mac:~/code/c/regex > gcc regexp.c -o

regexp

bitwangbin@mac:~/code/c/regex > ./regexp

'regex[a-z]*' < regexp.c

0003: #include ;

$0='regex'

0020:  regex_t reg;

$0='regex'

0037:  z =

regexec(&reg, lbuf, nmatch, pm, 0);

$0='regexec'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值