逗号分隔的正则表达式,除非逗号在括号内

丹妮

我需要这样的字符串:

cat, dog , ant( elephant, lion(tiger)), bird

到这个:

cat
dog
ant( elephant, lion(tiger))
bird

我目前的状态是:(\w+)(,\s*)*,但也将大象,狮子和老虎分开。此外,保留了一些逗号和空格。

您可能已经猜到,ant(...)在进一步的迭代中,我将再次在字符串上调用相同的表达式如果重要的话,我将在c ++中使用它。

沃利

这个正则表达式

(\w+\(.+\))|\w+

将解析

cat, dog , ant( elephant, lion(tiger)), bird

进入:

cat
dog
ant( elephant, lion(tiger))
bird

完整程序:

#include <string>
#include <vector>
#include <iterator>
#include <regex>
#include <iostream>

int main()
{
    std::string str{R"(cat, dog , ant( elephant, lion(tiger)), bird)"};
    std::regex r{R"((\w+\(.+\))|\w+)"};

    std::vector<std::string> result{};
    auto it = std::sregex_iterator(str.begin(), str.end(), r);
    auto end = std::sregex_iterator();
    for(; it != end; ++it) {
        auto match = *it;
        result.push_back(match[0].str());
    }
    std::cout << "Input string: " << str << '\n';
    std::cout << "Result:\n";
    for(auto i : result)
        std::cout << i << '\n';
}

现场演示

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

正则表达式模式使用逗号分隔值,但保留括号内使用的逗号

括号中用逗号分隔的数字的正则表达式

正则表达式检索用逗号分隔的括号内的字符串部分

正则表达式用逗号分隔的值放在方括号内

正则表达式匹配括号内的数字,以逗号分隔

正则表达式查找括号内用逗号分隔的值

正则表达式用于删除括号内的逗号

使用正则表达式替换括号内的逗号

逗号分隔的正则表达式

正则表达式的Java分裂逗号分隔的字符串,但忽略了逗号报价+支架+递归括号内

正则表达式-如何用逗号分隔字符串,省略括号中的逗号

基于逗号的分隔正则表达式,忽略引号内的逗号

正则表达式在逗号前匹配字符串,除非文本包含也用逗号分隔的组合列表

正则表达式,用于提取括号中的逗号分隔数字

正则表达式匹配具有递归的逗号分隔的平衡方括号

正则表达式按逗号分隔,而不用括号括起来(.NET)

正则表达式只匹配逗号而不是括号?

JavaScript表达式,括号内用逗号分隔

逗号分隔数字序列的Javascript正则表达式

正则表达式只允许数字逗号分隔

逗号分隔字符串的正则表达式

用 / 和逗号分隔的数字的正则表达式?

正则表达式逗号分隔定界符

用于逗号或/和空格分隔的正则表达式

逗号分隔项目的正则表达式

正则表达式用于以逗号分隔的整数

正则表达式捕获逗号分隔的值

整数,以逗号正则表达式分隔

提取逗号分隔值的正则表达式?