繁体   English   中英

正则表达式未正确评估字符串

[英]regular expression not evaluating string correctly

我正在尝试根据空格拆分字符串,除非在引号内。 这是我在网上找到的正则表达式(\\w+|\".*?\") 但是,当我尝试使用std::regex拆分字符串时,我只得到空字符串。

这是我必须拆分的代码:

std::regex exp("[^\\s\"']+|\"([^\"]*)\"|'([^']*)'");

std::sregex_token_iterator itr(s.begin(), s.end(), exp, -1);
std::sregex_token_iterator end;

for (; itr != end; itr++)
    std::cout << *itr << std::endl;

当我传递像"A "BC" 123"这样的字符串时,这只会打印出" " " 。 我做错了什么?

来自std::sregex_token_iterator的文档

submatch - 应返回的子匹配的索引。 “0”代表整个匹配,“-1”代表不匹配的部分(例如,匹配之间的东西)。

由于您传递的是 -1,这意味着您正在打印不匹配的部分,而不是匹配的部分。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM