我正在try 从Ruby中的字符串中提取单词.例如,如果我有以下内容:

"12jdfndjseven456sfjiThree"

我想得到一个包含["7","3"]的array.我唯一要找的单词是数字1……9,所以不是任何单词.有没有办法扫描这些特定的单词,然后在它们出现时映射它们?

我还希望它们按照它们在字符串中出现的顺序排列,所以不要只想做if/include,因为我认为这将使它们按照扫描它们的顺序排列(除非我错了?)

我想也许你可以做一个正则表达式扫描,但我在正则表达式可怕,所以不知道从哪里开始,因为它的话不是数字.

推荐答案

如果你有目标单词数组,你可以用pipe|连接单词数组

竖线元字符(|)可以用在括号内来表示交替:两个或更多个子表达式,其中任何一个都可以匹配目标字符串

在这scan次之后,使用这个Regexp

string = "12jdfndjseven456sfjithree"

words = %w[one two three four five six seven eight nine]

pattern = Regexp.union(words) # or %r{#{words.join('|')}} or /#{words.join('|')}/
# => /one|two|three|four|five|six|seven|eight|nine/

string.scan(pattern)
# => ["seven", "three"]

Ruby相关问答推荐

鲁比.METHOD_MISSING+SEND对于带有命名参数的混合参数失败

当Ruby `Complex` 类除了`==` 之外没有任何关系运算符时,它的祖先怎么能有`Comparable`?

如何在 Ruby 中生成一个包含 n 个唯一随机数的列表?

确保 Capybara 不存在元素

Ruby $:.unshift File.dirname(__FILE__)

如何使用 RSpec 忽略或跳过测试方法?

在 YAML 变量中包含 jekyll / liquid 模板数据?

VCRProxy:在 Capybara 内使用 VCR 记录 PhantomJS ajax 调用

hash['key'] 到 Ruby 中的 hash.key

如何声明 RSpec 中示例之间共享的变量?

什么时候在 Ruby 中使用 Struct 比使用 Hash 更好?

从命令行调用 ruby​​ 函数

Ruby:更新哈希值的最简单方法是什么?

如何在 ruby​​ 中解压缩 Gzip 字符串?

Sublime Text 2 控制台输入

判断字符串是否为空的Ruby方法?

很好地格式化输出到控制台,指定选项卡的数量

如何在 Ruby 中将类构造函数设为私有?

如何在 Ruby 中向异常消息中添加信息?

使用 RSpec 测试哈希内容