C - 警告:未知转义序列 '\



我正试图通过代码中的系统命令运行regex,我已经在StackOverflow中查看了类似警告的线程,但我不明白如何修复以下警告,它似乎只适用于doing\\}的闭括号。警告似乎消失了,但无法在重定向的文件中获得确切的输出。

#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"

实际上会导致"\Hello\Test"。

因此,您的regexp需要写成:

"[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}"

当然,这很痛苦,因为被用作正则表达式的转义符,又被用作字符串文字的转义符。

所以基本上:当你想放一个时,你需要写\

最新更新