警告: 不明なエスケープシーケンス '\d'
表題はLANG=Cなら「warning: unknown escape sequence '\d'」。
GRegex(GLibの正規表現)の一般キャラクタタイプ(整数を表す「\d」など)が使えなくて悩んでいた。
#include <glib.h> int main(int argc, char *argv[]) { GRegex *reg; GError *error = NULL; reg = g_regex_new ("\d\D\s\S\w\W", 0, 0, /* match flag */ &error); return 0; }
このようなコードを用意してコンパイルすると、
となってしまう。このためX11 Mouse Cursor plug-in for GIMPでは「\d」のかわりに「[:digit:]」を使っていた。おそらくかなり初歩的な見落としがあるのだろうと思ったがどうしてもわからないためgtk-app-devel-listに質問して見たところ、Cでは「\」は特別な意味があるので「\\」と書かないといけないよと教えていただいた。orz...
$ []gcc `pkg-config --cflags --libs glib-2.0` sample.c[]
[]sample.c:6:22: 警告: 不明なエスケープシーケンス '\d'[]
[]sample.c:6:22: 警告: 不明なエスケープシーケンス '\D'[]
[]sample.c:6:22: 警告: 不明なエスケープシーケンス '\s'[]
[]sample.c:6:22: 警告: 不明なエスケープシーケンス '\S'[]
[]sample.c:6:22: 警告: 不明なエスケープシーケンス '\w'[]
[]sample.c:6:22: 警告: 不明なエスケープシーケンス '\W'[]
いろいろ検索しても同じところで悩んでいるケースを見つけられなかったので、こんなアホなところではまっていたのは自分だけなのかもしれないが後に続く人のためにここに記す・・・。