在Ruby中解析字符串中的数字和字符串

时间:2016-03-08 16:02:11

标签: ruby regex parsing

我有一个字符串,如

a = "3red12green7852purple"

我想解析a以便我有一个像这样的数组

[3,"red", 12, "green", 7852, "purple"]

在Ruby中使用regexp是否可以这样做?

3 个答案:

答案 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]|$)/)