c++ - 标记一个字符串,不包括引号内的定界符

标签 c++ regex boost boost-regex boost-xpressive

首先让我说,我已经在 SO 上彻底研究了这个问题的所有其他解决方案,尽管它们非常相似,但没有一个能完全解决我的问题。

我需要使用 boost 正则表达式来提取不包括引号(对于引用的)的所有标记。

我认为我需要使用的正则表达式是:

sregex pattern = sregex::compile("\"(?P<token>[^\"]*)\"|(?P<token>\\S+)");

但是我得到一个错误:

named mark already exists

为 C# 发布的解决方案似乎适用于重复的命名标记,因为它是与另一个标记的 OR 表达式。

Regular Expression to split on spaces unless in quotes

最佳答案

我在这里回答了一个非常相似的问题:

How to make my split work only on one real line and be capable to skip quoted parts of string?

示例代码

  • 使用 Boost Spirit
  • 支持带引号的字符串、部分带引号的字段、用户定义的定界符、转义引号
  • 一般支持许多(不同的)输出容器
  • 支持 Range 概念模型作为输入(包括 char[],例如)

使用相对广泛的编译器版本和 Boost 版本进行测试。

https://gist.github.com/bcfbe2b5f071c7d153a0

关于c++ - 标记一个字符串,不包括引号内的定界符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7871721/

相关文章:

c++ - 在 VS2010 控制台应用程序中链接 windows.h (WNDCLASSEX) 代码

c++ - 如果事先不知道所有的类,如何实现双重调度?

c++ - "&"变量类型后的含义

c - 哪个 boost 宏允许我在程序中插入可变数量的语句

c++ - C++ 中的双数值积分

c++ - glibc 检测到双重释放或损坏

python - 用源代码在字符串中注释Python函数调用

regex - 如何编写执行以下操作的 grep 函数?

javascript - 正则表达式突出显示文本中的单词

c++ - 避免一千个 if 语句的最佳方法?