C中的正则表达式:示例?

C中的正则表达式:示例?

下面是一些关于如何在ANSI C中使用正则表达式的简单示例和最佳实践。man regex.h并没有提供那么多帮助。



慕尼黑的夜晚无繁华
浏览 744回答 3
3回答

宝慕林4294392

正则表达式实际上不是ANSI C的一部分,听起来您可能在谈论POSIX正则表达式库,它附带了大多数(所有?)*nix。下面是一个在C中使用POSIX正则表达式的示例(基于这,这个):#include&nbsp;<regex.h>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;regex_t&nbsp;regex;int&nbsp;reti;char&nbsp;msgbuf[100];/*&nbsp;Compile&nbsp;regular&nbsp;expression&nbsp;*/reti&nbsp;=&nbsp;regcomp(&regex,&nbsp;"^a[[:alnum:]]",&nbsp;0);if&nbsp;(reti)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;fprintf(stderr,&nbsp;"Could&nbsp;not&nbsp;compile&nbsp;regex\n"); &nbsp;&nbsp;&nbsp;&nbsp;exit(1);}/*&nbsp;Execute&nbsp;regular&nbsp;expression&nbsp;*/reti&nbsp;=&nbsp;regexec(&regex,&nbsp;"abc",&nbsp;0,&nbsp;NULL,&nbsp;0);if&nbsp;(!reti)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;puts("Match");}else&nbsp;if&nbsp;(reti&nbsp;==&nbsp;REG_NOMATCH)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;puts("No&nbsp;match");}else&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;regerror(reti,&nbsp;&regex,&nbsp;msgbuf,&nbsp;sizeof(msgbuf)); &nbsp;&nbsp;&nbsp;&nbsp;fprintf(stderr,&nbsp;"Regex&nbsp;match&nbsp;failed:&nbsp;%s\n",&nbsp;msgbuf); &nbsp;&nbsp;&nbsp;&nbsp;exit(1);}/*&nbsp;Free&nbsp;memory&nbsp;allocated&nbsp;to&nbsp;the&nbsp;pattern&nbsp;buffer&nbsp;by&nbsp;regcomp()&nbsp;*/regfree(&regex);或者,您可能想要退房。PCRE中与Perl兼容的正则表达式库。Perl语法与Java、Python和许多其他语言中使用的语法基本相同。POSIX语法是grep,&nbsp;sed,&nbsp;vi等

慕娘9325324

可能不是你想要的,而是像第2c条可以将POSIX(-ISH)正则表达式编译为ANSI C。lex,但这种方法允许您牺牲灵活性和可读性来换取最后一点的速度,如果您真的需要的话。
打开App,查看更多内容
随时随地看视频慕课网APP