我正在尝试将包含aaaaa,bbbbb,ccccc的数组作为下面的拆分输出。
a_string = "aaaaa[x]bbbbb,ccccc";
split_output a_string.split.split(%r{[,|........]+})
我应该把它作为........的替代品?
答案 0 :(得分:2)
当它只是一个文字时,不需要正则表达式:
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"]
编辑:我仍然不确定你的标准是什么,但我们猜测你真正在做的是寻找2个或更多相同角色的运行:
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
字符拆分。)
答案 1 :(得分:1)
不需要正则表达式,只需使用"[x]"