C 如何使用正则表达式?
现在用C#或PHP编写正则表达式对我来说非常容易。然而,目前我需要在C中使用regex。而且,我似乎不完全理解regcomp或regexec的用法。这肯定是因为我缺乏C语言方面的经验。使用这个库。示例包含在源代码的C 如何使用正则表达式?,c,regex,C,Regex,现在用C#或PHP编写正则表达式对我来说非常容易。然而,目前我需要在C中使用regex。而且,我似乎不完全理解regcomp或regexec的用法。这肯定是因为我缺乏C语言方面的经验。使用这个库。示例包含在源代码的demo/目录中 您需要一个提供该功能的库,有几种可供选择。是一个。gnu C库有一个这可能会让您开始,正如您所指出的regex(3)函数。下面是一个与参数匹配的普通程序。但是,如果您对C比较陌生,您将希望慢慢地使用regex(3),因为您将使用指针和数组以及regmatch\t提供的
demo/
目录中 您需要一个提供该功能的库,有几种可供选择。是一个。gnu C库有一个这可能会让您开始,正如您所指出的regex(3)
函数。下面是一个与参数匹配的普通程序。但是,如果您对C比较陌生,您将希望慢慢地使用regex(3)
,因为您将使用指针和数组以及regmatch\t
提供的偏移量、狮子、老虎和熊
。。。资料来源:
#include <sys/types.h>
#include <regex.h>
#include <stdio.h>
int main(int argc, char **argv) {
int r;
regex_t reg;
++argv; /* Danger! */
if (r = regcomp(®, *argv, REG_NOSUB|REG_EXTENDED)) {
char errbuf[1024];
regerror(r, ®, errbuf, sizeof(errbuf));
printf("error: %s\n", errbuf);
return 1;
}
for (++argv; *argv; ++argv) {
if (regexec(®, *argv, 0, NULL, 0) == REG_NOMATCH)
continue;
printf("matched: %s\n", *argv);
}
return 0;
}
#包括
#包括
#包括
int main(int argc,字符**argv){
INTR;
regex_t reg;
++argv;/*危险*/
if(r=regcomp(®,*argv,reg_NOSUB | reg_EXTENDED)){
char errbuf[1024];
regerror(r,®,errbuf,sizeof(errbuf));
printf(“错误:%s\n”,errbuf);
返回1;
}
对于(++argv;*argv;++argv){
if(regexec(®,*argv,0,NULL,0)=reg\u NOMATCH)
继续;
printf(“匹配的:%s\n”,*argv);
}
返回0;
}
还有libslack(str)-字符串模块:
一个与perl兼容的正则表达式库-这不违反人权法案吗?PCRE几乎是一个标准,这使得编写者和维护者处理正则表达式更加容易。而且。。。我所需要的只是一个在C。。。TT@Dave:示例包含在PCRE分发中。查看
demo/
目录。是的,谢谢,我刚才也在看。它也有很好的例子!对于John和Dirk,我已经安装了PCRE,但我想我对它在C中的使用感兴趣。是的,我不知道如何使用它。。。也就是regcomp和regexec函数。对于其他任何看这个的人来说,约翰·米利金的答案也一样好。他提供的例子是PCRE,皮尔克罗的是GNU C Lib的regex,我相信。
#include <sys/types.h>
#include <regex.h>
#include <stdio.h>
int main(int argc, char **argv) {
int r;
regex_t reg;
++argv; /* Danger! */
if (r = regcomp(®, *argv, REG_NOSUB|REG_EXTENDED)) {
char errbuf[1024];
regerror(r, ®, errbuf, sizeof(errbuf));
printf("error: %s\n", errbuf);
return 1;
}
for (++argv; *argv; ++argv) {
if (regexec(®, *argv, 0, NULL, 0) == REG_NOMATCH)
continue;
printf("matched: %s\n", *argv);
}
return 0;
}