如何将拆分令牌保留在Ruby中拆分的第二部分?

时间:2017-03-17 15:06:19

标签: ruby regex string split

在Ruby中,你如何分割一个搅拌并保留你在拆分结果的第二部分中拆分的令牌?我有

line.split(/(?<=#{Regexp.escape(split_token)})/)

但令牌正在合并到分裂的第一部分,我希望它在第二部分

2.4.0 :004 >   split_token = "aaa"
 => "aaa"
2.4.0 :005 > line = "bbb aaa ccc"
 => "bbb aaa ccc"
2.4.0 :006 > line.split(/(?<=#{Regexp.escape(split_token)})/)
 => ["bbb aaa", " ccc"]

2 个答案:

答案 0 :(得分:2)

将lookbehind((?<=)更改为lookahead((?=)似乎可以解决问题:

split_token = "aaa"
line = "bbb aaa ccc"
line.split(/(?=#{Regexp.escape(split_token)})/)
# => ["bbb ", "aaa ccc"]

这只是将分割点更改为令牌之前而不是之后。

答案 1 :(得分:0)

另一种可能性是使用slice_before

line.split.slice_before('aaa').map{|s| s.join(' ')}