如何在C++中使用 boost::regex 获取字符串
How to grab a string using boost::regex in C++?
示例字符串:
std::string sentence = "Hello {Bobby}, hows {Johns}?."
我希望能够使用 boost::regex 抓取大括号内的所有内容,任何帮助或指导将不胜感激。
字符串可以包含 {Bobby|john|cindy} 或 {Bobby||Cindy} 或 {{Bobby}},其中它将是 {Bobby}。我正在尝试找出正则表达式。
谢谢。
此处介绍了整体方法和代码示例。
您需要的正则表达式似乎是:
([^{}]*{([^{}]*)})+
除非字符串使用正确配对的非嵌套大括号,否则此正则表达式根本不匹配。 如果匹配,则可以使用 regex_iterator
处理每个匹配项中每隔一个子组。
根据您对David答案的评论,您可能进入了正则表达式无法直接解析的领域。 像你用双括号描述的嵌套的东西让我印象深刻,你可能需要一个实际的语法来解析。 在这种情况下,你会得到了解野牛的"乐趣"。 如果它无法解析它,你需要一些比简单更具体的东西。
单花括号,相当简单。 双打里面有什么...是龙。 因为这样你就会陷入这样的事情:"你{想要|这里}}什么? 提供给Bison的语法可以解决这个问题。 我不确定一个简单的正则表达式可以。
相关文章:
- 使用 boost::regex 从目录中获取带有一些正则表达式的文件名称时出现意外输出
- 在VC2015U3上,std::regex比boost::regex慢得多
- 使用 boost::regex (c++) 比较两个正则表达式
- Build Boost Regex for Windows VS2013
- boost::regex 和std::regex之间的不一致?
- 尝试使用生成文件编译程序时"fatal error: boost/regex.hpp: No such file or directory" C++
- 带有Boost Regex库的未解决的外部对象
- boost::regex链接问题在Xcode 4.5.2中
- 如何检查使用哪个匹配组进行匹配(boost-regex)
- boost::regex和std::regex之间的不一致
- Boost.Regex parsing
- BOOST.REGEX定界器解析
- 以下等级表达式不适合Boost Regex
- 在Windows C 代码:: Blocks上的Boost Regex
- Boost Regex用于格式化MAC地址字符串
- 使用 c++/boost::regex 提取 HTML 文件的特定部分
- 使用 boost::regex 更改文件中数据的格式
- 在OS X上使用clang编译boost regex时发生链接错误
- boost regex空格后跟一个或多个星号
- Boost Regex中的命名子表达式错误