C:
正規表現を使用する
使い方:
Cで正規表現を使用するには、主にPOSIX regexライブラリ(<regex.h>
)を扱います。この例は基本的なパターンマッチングを示しています:
#include <stdio.h>
#include <stdlib.h>
#include <regex.h>
int main(){
regex_t regex;
int return_value;
char *pattern = "^a[[:alnum:]]"; // 'a'で始まり英数字で続く文字列にマッチするパターン
char *test_string = "apple123";
// 正規表現をコンパイルする
return_value = regcomp(®ex, pattern, REG_EXTENDED);
if (return_value) {
printf("Could not compile regex\n");
exit(1);
}
// 正規表現を実行する
return_value = regexec(®ex, test_string, 0, NULL, 0);
if (!return_value) {
printf("Match found\n");
} else if (return_value == REG_NOMATCH) {
printf("No match found\n");
} else {
printf("Regex match failed\n");
exit(1);
}
// regexによって使用されたメモリを解放する
regfree(®ex);
return 0;
}
一致する文字列(“apple123”)のサンプル出力:
Match found
一致しない文字列(“banana”)の場合:
No match found
詳細解説:
Cにおける正規表現は、POSIX標準の一部として、文字列の一致と操作を実行する堅牢な方法を提供します。しかし、CのPOSIX regexライブラリのAPIは、PythonやPerlのように最初から文字列操作機能を設計した言語で見つかるAPIよりも扱いにくいと考えられています。パターンの構文は言語間で似ていますが、Cでは手動でメモリ管理を行い、regexパターンを使用する準備、実行、後処理のためにより多くのボイラープレートコードが必要です。
これらの課題にもかかわらず、Cでregexを使用する方法を学ぶことは、より低レベルのプログラミング概念の理解を深めるために有益であり、テキスト処理やデータ抽出のような分野でCプログラミングの可能性を広げます。より複雑なパターンやregex操作には、PCRE(Perl互換正規表現)ライブラリなどの代替手段が、より多くの機能を備え、多少使いやすいインターフェースを提供するかもしれませんが、Cプロジェクトに外部ライブラリを統合する必要があります。