部分文字列の照合、検索、および置換のために GNU G++ / GCC で正規表現を使用するにはどうすればよいですか? たとえば、およびその他のチュートリアルを提供できますregex_tか?
1時間以上グーグルで調べても、わかりやすいチュートリアルやマニュアルはありませんでした。
BoostC ++正規表現ライブラリを使用することを強くお勧めします。本格的なC++を開発している場合、Boostは間違いなく考慮しなければならないものです。
ライブラリは、PerlとPOSIXの両方の正規表現構文をサポートしています。私は個人的にPerlの正規表現を好みます。なぜなら、それらはより直感的で正しく理解しやすいと信じているからです。
http://www.boost.org/doc/libs/1_46_0/libs/regex/doc/html/boost_regex/syntax.html
ただし、この優れたライブラリについての知識がない場合は、ここから始めることをお勧めします。
http://www.boost.org/doc/libs/1_46_0/libs/regex/doc/html/index.html
ここで答えを見つけました:
#include <regex.h>
#include <stdio.h>
int main()
{
int r;
regex_t reg;
if (r = regcomp(®, "\\b[A-Z]\\w*\\b", REG_NOSUB | REG_EXTENDED))
{
char errbuf[1024];
regerror(r, ®, errbuf, sizeof(errbuf));
printf("error: %s\n", errbuf);
return 1;
}
char* argv[] = { "Moo", "foo", "OlOlo", "ZaooZA~!" };
for (int i = 0; i < sizeof(argv) / sizeof(char*); i++)
{
if (regexec(®, argv[i], 0, NULL, 0) == REG_NOMATCH)
continue;
printf("matched: %s\n", argv[i]);
}
return 0;
}
上記のコードは、
matched: Moo
matched: OlOlo
matched: ZaooZA~!
マニュアルは簡単に見つけられるはずです: POSIX 正規表現関数. それがわからない場合は、C および C++ のスキルを磨くことを強くお勧めします。
一致した部分文字列を実際に置き換えることは、まったく別の問題であり、正規表現関数では役に立たないことに注意してください。