如何使用正则表达式匹配括号?

Amb*_*mbi 2 c++ regex boost

我正在使用boost库来解析文件.众所周知,当你使用括号时,它表示正则表达式中的子表达式.如果我的文件包含括号,我将如何声明正则表达式?我试着\(没有运气.谁能告诉我如何为以下格式的文件声明正则表达式?

a:(1)
b:(2)
Run Code Online (Sandbox Code Playgroud)

我可以在文件内容时进行解析

a:1
b:2
Run Code Online (Sandbox Code Playgroud)

通过声明正则表达式boost::regex e("([a-z]):([0-9])"); 你能告诉我如果值在括号中我怎么也匹配?

orl*_*rlp 16

如果要使用括号,则需要使用反斜杠转义它们.问题是你需要转义反斜杠(对于C++编译器).例:

std::string regexstring = "\\([a-z]\\):\\([0-9]\\)"; 
Run Code Online (Sandbox Code Playgroud)

  • 非常感谢。当我将正则表达式模式从 C# 转移到 C++ 时,出现了这个问题,我没有意识到编译器以不同的方式对待它们。对于搜索的人来说,这修复了警告“C4129:'(':无法识别的字符转义序列”。 (2认同)