你好,我想从以下字符串中提取参数:VAL_ 234 State1 123 "Description 1" 0 "Description 2 with \n new line" 90903489 "Big value and special characters &$§())!" ;
所需的匹配项为
- 234
- 状态1
- 然后是无符号整数和字符串组合的数组
- 123“说明1”
- 0“说明2有\n新行”
- 90903489“大值和特殊字符&$§())!”
如果不能直接拆分数组,那么在第二步拆分数组。使用下面的正则表达式,我总是得到数组90903489 "Big value and special characters &$§())!"
的最后一个匹配项^VAL_ ([0-9]+) ([A-Za-z_][A-Za-z_0-9]*) ([0-9]*\\s\"[^\"]*\"\\s)+
有可能提取值吗?我已经找到了
auto blah = std::string{"5001 | 5002 | 5003"};
auto values = std::vector<std::string>{
std::sregex_token_iterator{blah.begin(), blah.end(), std::regex{R"(\d+)"}},
std::sregex_token_iterator{}};
从this post返回,但是它只返回完整的字符串。是否可以迭代子匹配?
3条答案
按热度按时间0dxa2lsx1#
不确定您是否对如何分隔匹配有任何特定的要求,但是您可以使用the following regular expression来匹配其中一种模式:
样本代码:
8cdiaqws2#
基于@rustyx link,我创建了自己的解析器
u3r8eeie3#
我将执行
regex_match
,然后使用sregex_iterator
执行循环。Demo(https://godbolt.org/z/zYPWv4aP6)