我正在使用Rails 5.我正在尝试拆分正则表达式,但它似乎是在拆分后切断项目的第一个字符。我有
styles
我希望结果是
2.4.0 :044 > tokens = ["12.BILL R. PRESTON"]
=> ["12.BILL R. PRESTON"]
2.4.0 :045 > tokens = tokens.flat_map { |token| token =~ /\d\.[a-z]/i ? token.split(/\d\.[a-z]/i) : token }
=> ["1", "ILL R. PRESTON"]
但“B”已被删除。如何调整我的分割表达式?
答案 0 :(得分:1)
使用lookahead (?=[a-z])
,以便在分组中不使用B
:
tokens.flat_map { |token| token =~ /\d\.[a-z]/i ? token.split(/\d\.(?=[a-z])/i) : token }
=> ["1", "BILL R. PRESTON"]
如果你想同时保留2
和B
,你可以添加一个lookbehind (?<=\d)
:
tokens.flat_map { |token| token =~ /\d\.[a-z]/i ? token.split(/(?<=\d)\.(?=[a-z])/i) : token }
=> ["12", "BILL R. PRESTON"]
答案 1 :(得分:0)
tokens = ["12.BILL R. PRESTON", "238.BETTY Z. BOOP"]
tokens.map { |s| s.split(/(?<=\d)\d+\./) }
#=> [["1", "BILL R. PRESTON"], ["2", "BETTY Z. BOOP"]]
If you want all the digits split off, remove `\d+`:
tokens.map { |s| s.split(/(?<=\d)\./) }
#=> [["12", "BILL R. PRESTON"], ["238", "BETTY Z. BOOP"]]