【问题标题】:How to match parenthesis using a regular expression?如何使用正则表达式匹配括号?
【发布时间】:2011-03-23 10:16:51
【问题描述】:

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

a:(1)
b:(2)

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

a:1
b:2

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

【问题讨论】:

    标签: c++ regex boost


    【解决方案1】:

    如果你想使用括号,你需要用反斜杠转义它们。问题是您也需要转义该反斜杠(对于 C++ 编译器)。示例:

    std::string regexstring = "\\([a-z]\\):\\([0-9]\\)"; 
    

    【讨论】:

    • 非常感谢。当我将正则表达式模式从 C# 转移到 C++ 时出现了这个问题,我没有意识到编译器对它们的处理方式不同。对于搜索的人,这修复了警告 C4129: '(': unrecognized character escape sequence
    猜你喜欢
    • 1970-01-01
    • 2011-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-18
    • 2016-02-13
    相关资源
    最近更新 更多