如何在C++中使用 boost::regex 获取字符串

How to grab a string using boost::regex in C++?

本文关键字:boost regex 获取 字符串 C++      更新时间:2023-10-16

示例字符串:

std::string sentence = "Hello {Bobby}, hows {Johns}?."

我希望能够使用 boost::regex 抓取大括号内的所有内容,任何帮助或指导将不胜感激。

字符串可以包含 {Bobby|john|cindy} 或 {Bobby||Cindy} 或 {{Bobby}},其中它将是 {Bobby}。我正在尝试找出正则表达式。

谢谢。

此处介绍了整体方法和代码示例。

您需要的正则表达式似乎是:

([^{}]*{([^{}]*)})+

除非字符串使用正确配对的非嵌套大括号,否则此正则表达式根本不匹配。 如果匹配,则可以使用 regex_iterator 处理每个匹配项中每隔一个子组。

根据您对David答案的评论,您可能进入了正则表达式无法直接解析的领域。 像你用双括号描述的嵌套的东西让我印象深刻,你可能需要一个实际的语法来解析。 在这种情况下,你会得到了解野牛的"乐趣"。 如果它无法解析它,你需要一些比简单更具体的东西

单花括号,相当简单。 双打里面有什么...是龙。 因为这样你就会陷入这样的事情:"你{想要|这里}}什么? 提供给Bison的语法可以解决这个问题。 我不确定一个简单的正则表达式可以。