[解決済み] 警告: 不明なエスケープシーケンス '\
2022-02-09 15:47:42
質問
コード内のシステムコマンドで正規表現を実行しようとしています。StackOverflowの同様の警告に関するスレッドに目を通しましたが、以下の警告を修正する方法が分かりませんでした。} 警告は消えているようですが、リダイレクトされたファイルに正確な出力を得ることができません。
#include<stdio.h>
int main(){
FILE *in;
char buff[512];
if(system("grep -o '[0-9]\{1,3\}\\.[0-9]\{1,3\}\\.[0-9]\{1,3\}\\.[0-9]\{1,3\}' /home/santosh/Test/text >t2.txt") < 0){
printf("system failed:");
exit(1);
}
}
警告
dup.c:9:11: warning: unknown escape sequence '\}'
dup.c:9:11: warning: unknown escape sequence '\}'
dup.c:9:11: warning: unknown escape sequence '\}'
dup.c:9:11: warning: unknown escape sequence '\}'
dup.c: In function 'main':
解決方法は?
C言語の文字列リテラルでは
\
は特別な意味を持っており、改行などの文字を表現するためのものです。
\n
. を置きたい場合は
\
を文字列の中で使用する必要があります。
\\
.
例えば
"\\Hello\\Test"
は、実際には" \HelloTest" となります。
というわけで、正規表現は次のように書く必要があります。
"[0-9]\\{1,3\}\\\\.[0-9]\\{1,3\}\\\\.[0-9]\\{1,3\\}\\\\.[0-9]\\{1,3\\}"
の代わりに
"[0-9]\{1,3\}\\.[0-9]\{1,3\}\\.[0-9]\{1,3\}\\.[0-9]\{1,3\}"
確かにこれは痛いです、なぜなら
\
は正規表現のエスケープ文字として使われ、さらに文字列リテラルのエスケープ文字として使われます。
つまり、基本的には
\
を記述する必要があります。
\\
.
関連
-
[解決済み] Connect: ソケット以外でのソケット操作
-
[解決済み】MB/sとMiB/sを計算する方法は?
-
[解決済み】Linuxでexeclp()がどのように動作するのか理解できません。
-
[解決済み】スタックスマッシュを検出しました
-
[解決済み】C言語のフォーマット文字列でデータ引数が使用されない [重複]。
-
[解決済み] '{'トークンの前に期待される式
-
[解決済み】makefile:4。*** missing separator. 停止する
-
[解決済み】シンプルなC言語のscanfが機能しない?重複
-
[解決済み] 正規表現で「この文字列までなら何でもあり」にマッチさせるには?
-
[解決済み] DeprecationWarning: invalid escape sequence - What to use instead of \d?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】stdinとSTDIN_FILENOの違いは何ですか?
-
[解決済み】Cコンパイルエラー。"変数サイズのオブジェクトが初期化されていない可能性がある"
-
[解決済み】「ポインタから異なるサイズの整数へのキャスト」エラーが発生するのはなぜですか?
-
[解決済み】ISO C90では、C言語での宣言とコードの混在が禁止されています。
-
[解決済み】 strcpyとstrdupの比較
-
[解決済み】C 未知の型名「my_structure」。
-
[解決済み】Linuxでexeclp()がどのように動作するのか理解できません。
-
[解決済み】0LLや0x0ULの意味は何ですか?
-
[解決済み】C言語でpow( )への未定義参照、math.hを含むにもかかわらず【重複】。
-
[解決済み】シンプルなC言語のscanfが機能しない?重複