我试图得到一个数组,包含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
字符上拆分。)