
c 语言 正则表达式regcomp() regexec()问题
#include<stdio.h>#include<stdlib.h>#include<sys/types.h>#include<regex.h>#include<str...
#include<stdio.h>
#include<stdlib.h>
#include<sys/types.h>
#include<regex.h>
#include<string.h>
int main(){
int status,i,q=0,w=0;
int cflags=REG_ICASE;
regmatch_t pm[5];
const size_t nm=5;
regex_t reg;
const char *pattern="liao";
char *c="liao,.][jjddjdj,,liaojdjddj,.liaojddj,liao";
regcomp(®,pattern,cflags);
status=regexec(®,c,nm,pm,0);
if(status==REG_NOMATCH)
printf("nonononono\n");
else if(status==0)
{
printf("successful! Shows:\n");
for(;q<nm;q++){
for(w=pm[q].rm_so;w<pm[q].rm_eo;++w)
printf("%c",c[w]);
printf("\n");
}
}
为什么每次都只输出一个 liao, pm[]数组也只有第一组有值,难道不应该把匹配的 liao 的位置都存入pm[]数组么?? 跪求大神解答!!!!
那两个函数的第一个参数,没有显示正确,大家知道就行了哈,程序没错的 展开
#include<stdlib.h>
#include<sys/types.h>
#include<regex.h>
#include<string.h>
int main(){
int status,i,q=0,w=0;
int cflags=REG_ICASE;
regmatch_t pm[5];
const size_t nm=5;
regex_t reg;
const char *pattern="liao";
char *c="liao,.][jjddjdj,,liaojdjddj,.liaojddj,liao";
regcomp(®,pattern,cflags);
status=regexec(®,c,nm,pm,0);
if(status==REG_NOMATCH)
printf("nonononono\n");
else if(status==0)
{
printf("successful! Shows:\n");
for(;q<nm;q++){
for(w=pm[q].rm_so;w<pm[q].rm_eo;++w)
printf("%c",c[w]);
printf("\n");
}
}
为什么每次都只输出一个 liao, pm[]数组也只有第一组有值,难道不应该把匹配的 liao 的位置都存入pm[]数组么?? 跪求大神解答!!!!
那两个函数的第一个参数,没有显示正确,大家知道就行了哈,程序没错的 展开
1个回答
展开全部
标准C没有正则,不太了解函数。
通过PHP的经验,基本可以确定LZ没有循环正则匹配。
while(bStatus)
{
bStatus = regexec(®,c,nm,pm,0);
//把匹配到的数据导入缓冲区
}
通过PHP的经验,基本可以确定LZ没有循环正则匹配。
while(bStatus)
{
bStatus = regexec(®,c,nm,pm,0);
//把匹配到的数据导入缓冲区
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询