1. ホーム
  2. c

[解決済み] C言語での正規表現:例?

2022-03-03 03:01:40

質問

ANSI Cで正規表現を使用する方法について、簡単な例とベストプラクティスを知りたいのです。 man regex.h はそこまでのヘルプを提供しません。

どのように解決するのですか?

正規表現はANSI Cの一部ではありません。それは、ほとんどの(すべての?)*nixesに付属しているPOSIX正規表現ライブラリのことを言っているのでしょう。以下は、C言語でPOSIX正規表現を使う例です(ベースは これ ):

#include <regex.h>        
regex_t regex;
int reti;
char msgbuf[100];

/* Compile regular expression */
reti = regcomp(&regex, "^a[[:alnum:]]", 0);
if (reti) {
    fprintf(stderr, "Could not compile regex\n");
    exit(1);
}

/* Execute regular expression */
reti = regexec(&regex, "abc", 0, NULL, 0);
if (!reti) {
    puts("Match");
}
else if (reti == REG_NOMATCH) {
    puts("No match");
}
else {
    regerror(reti, &regex, msgbuf, sizeof(msgbuf));
    fprintf(stderr, "Regex match failed: %s\n", msgbuf);
    exit(1);
}

/* Free memory allocated to the pattern buffer by regcomp() */
regfree(&regex);

あるいは、次のようなものもあります。 PCRE Perlの構文は、Java、Python、その他多くの言語で使われている構文とほぼ同じです。POSIXの構文は grep , sed , vi など。