我正在使用正则表达式来确定命令行参数具有.dat扩展名.我正在尝试以下正则表达式:
#define to_find "^.*\.(dat)?"
Run Code Online (Sandbox Code Playgroud)
出于某种原因,我收到了我在这个问题标题中所说的警告.首先,这个表达是否正确?我相信它是.第二,如果它是正确的,我怎么能摆脱这个警告?
我在Xcode编写ac程序,上面的#define在我的.h文件中.谢谢!
das*_*ght 36
警告来自C编译器.它告诉你这\.不是C中已知的转义序列.由于这个字符串是一个正则表达式引擎,你需要双斜线斜杠,如下所示:
#define to_find "^.*\\.(dat)?"
Run Code Online (Sandbox Code Playgroud)
此正则表达式将匹配带有可选.dat扩展名的字符串,并且dat是可选的.但是,点.是必需的.如果你想要点也是可选的,把它放在括号内,如下所示:^.*(\\.dat)?.
请注意,您可以通过将它们括在方括号中来避免转义单个元字符,如下所示:
#define to_find "^.*([.]dat)?"
Run Code Online (Sandbox Code Playgroud)