试图获取某些数字并将它们各自放在自己的行上

时间:2014-05-06 22:37:15

标签: ruby regex

le内的所有数字,可能是一个月内的天数 1-31。假设数字1-9之前或之后可以是0.数字的一个或两个数字必须夹在非数字字符之间。打印其上的每个匹配数字 自己的路线。

所以基本上我读了所有数字1-31或01-31并将它们输出到自己的行上。

我所知道的是 我可以使用拆分来分解它,这将是好的,我也知道我可以使用类似于([1-9]|0[0-9]|1[1-9]|2[0-9]|3[0-1])的东西来查找数字,但在那之后我很难过并且可以使用一些帮助。

编辑:回答一些问题,这是在ruby和一些测试输入/输出这里帮助 输入 -

1
10
12
18 19 20
21 22 ----asdfadsf 23t24####25,26,27,
28!
29.
30
31
32
33
01 02 03x04x05x06x07x08x09
001
002
1x1a
    35


-87 76 101 10057

-13 -1.5

输出-1 10 12 18 19 20 21 22 23 24 25 26 27 28 29 三十 31 01 02 03 04 05 06 07 08 09 1 1 13 1 五 (每个都在它自己的行上,但我不想让它太长)我也删除了一些使它成为一个较小的文件所以我有可能错过删除输出中的数字,但我认为我得到了所有。

1 个答案:

答案 0 :(得分:0)

假设您的数字是单个字符串x

,我们会为您做这件事
x.split(/\D+/).select {|n| n.to_i >= 0 && n.to_i < 32 && n.length < 3}.join("\n")

如果它们在文件中,您可以使用IO::read(path)

轻松将它们转换为字符串
x = IO.read(path)
x.split(/\D+/).select {|n| n.to_i >= 0 && n.to_i < 32 && n.length < 3}.join("\n")