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

4

我正在使用boost库来解析文件。众所周知,当您在正则表达式中使用括号时,它表示一个子表达式。如果我的文件包含括号,我该如何声明正则表达式呢?我尝试使用\(但没有成功。有人可以告诉我如何为以下格式的文件声明正则表达式吗?

a:(1)
b:(2)

当文件内容为以下格式时,我可以执行解析操作:

a:1
b:2

通过声明正则表达式为 boost::regex e("([a-z]):([0-9])");,您能告诉我如何匹配值在括号中的情况吗?

1个回答

22
如果你想使用括号,你需要用反斜杠进行转义。问题在于你还需要转义那个反斜杠(对于C++编译器而言)。例子:
std::string regexstring = "\\([a-z]\\):\\([0-9]\\)"; 

2
非常感谢。这个问题出现在我将一个正则表达式模式从C#转移到C++时,我没有意识到编译器会以不同的方式处理它们。对于那些正在搜索的人,这可以解决警告C4129:'(':无法识别的字符转义序列 - Kevin Boos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接