You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby中从无空格字符串提取指定数字单词的实现方法

Ruby提取字符串中的数字单词(one至nine)

直接用正则表达式配合String#scan就能搞定,而且scan会严格按照单词在原字符串中的出现顺序返回结果,完全符合你的需求。

基础实现代码

input_str = "12jdfndjseven456sfjithree"
extracted_words = input_str.scan(/one|two|three|four|five|six|seven|eight|nine/)
# 输出结果:["seven", "three"]

说明

  • 正则表达式/one|two|three|four|five|six|seven|eight|nine/会匹配所有出现的目标数字单词,|用来分隔不同的匹配选项。
  • scan方法会遍历整个字符串,把所有匹配到的子串按顺序收集到数组里,不需要额外的排序或判断逻辑,完美保持原顺序。

进阶:避免部分匹配(可选)

如果你的字符串里可能出现类似ones、threex这类包含目标单词的更长字符串,不想误提取其中的数字单词,可以用正则断言来限定匹配的边界:

input_str = "12oneseven456threex"
extracted_words = input_str.scan(/(?<![a-zA-Z])(one|two|three|four|five|six|seven|eight|nine)(?![a-zA-Z])/)
# 输出结果:["seven"],不会提取"ones"里的"one"和"threex"里的"three"

这里(?<![a-zA-Z])是反向否定断言,确保匹配的单词前面没有字母;(?![a-zA-Z])是正向否定断言,确保单词后面没有字母,只匹配独立的数字单词。

内容的提问来源于stack exchange,提问作者linneabell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 17:04:55