我有一个字符串,如
a = "3red12green7852purple"
我想解析a
以便我有一个像这样的数组
[3,"red", 12, "green", 7852, "purple"]
在Ruby中使用regexp是否可以这样做?
答案 0 :(得分:3)
是。与其他答案不同,使用split
是这里的方法。
a.split(/(\D+)/)
# => ["3", "red", "12", "green", "7852", "purple"]
a.split(/(\D+)/).each_slice(2).flat_map{|i, s| [i.to_i, s]}
# => [3, "red", 12, "green", 7852, "purple"]
答案 1 :(得分:2)
这也有效,FWIW:
a.scan(/\D+|\d+/)
答案 2 :(得分:1)
# letters followed by numbers or numbers followed by letters
your_regex <- "[A-Za-z]+(?=\\d|$)|\\d+(?=[A-Za-z]|$)"
unlist(str_extract_all(a, your_regex))
[1] "3" "red" "12" "green" "7852" "purple"
你的问题最初被标记为R.在Ruby中(我不知道)我觉得它会像
a.scan(/[A-Za-z]+(?=\d|$)|\d+(?=[A-Za-z]|$)/)