2017-03-17 50 views
0

在Ruby中,你如何拆分一個結果,並在拆分的結果的第二部分保留要拆分的令牌?我有如何將分割標記保留在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"] 

回答

1

更改回顧後((?<=),以前瞻((?=)似乎做技巧:

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

這只是將分割點更改爲令牌之前,而不是之後。

0

另一種可能性是使用slice_before

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