通过正则表达式拆分特定字符串

时间:2011-09-30 02:30:49

标签: ruby regex

我正在尝试将包含aaaaa,bbbbb,ccccc的数组作为下面的拆分输出。

a_string = "aaaaa[x]bbbbb,ccccc";
split_output a_string.split.split(%r{[,|........]+})
我应该把它作为........的替代品?

2 个答案:

答案 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]"