我试图得到一个数组,包含aaaaaa,bbbbb,ccccc作为下面的分割输出。

a_string = "aaaaa[x]bbbbb,ccccc";
split_output a_string.split.split(%r{[,|........]+})

我应该用什么来代替是吗?

最佳答案

当它只是一个文本时,不需要正则表达式:

irb(main):001:0> a_string = "aaaaa[x]bbbbb"
irb(main):002:0> a_string.split "[x]"
=> ["aaaaa", "bbbbb"]

如果你想用“开方括号…任何东西…闭方括号”分开,那么:
irb(main):003:0> a_string.split /\[.+?\]/
=> ["aaaaa", "bbbbb"]

编辑:我仍然不确定你的标准是什么,但让我们猜猜你真正做的是寻找两个或更多相同角色的跑步:
irb(main):001:0> a_string = "aaaaa[x]bbbbb,ccccc"
=> "aaaaa[x]bbbbb,ccccc"
irb(main):002:0> a_string.scan(/((.)\2+)/).map(&:first)
=> ["aaaaa", "bbbbb", "ccccc"]

编辑2:如果要按文本字符串",""[x]"拆分,则:
irb(main):003:0> a_string.split /,|\[x\]/
=> ["aaaaa", "bbbbb", "ccccc"]

正则表达式的|部分允许两边的表达式匹配,并且需要反斜杠,否则字符[]具有特殊意义。(如果您试图通过/,|[x]/拆分,则它将在逗号或x字符上拆分。)

10-01 10:16