在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"]
答案 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(' ')}