首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在数组中匹配通配符时遇到问题

在数组中匹配通配符时遇到问题
EN

Stack Overflow用户
提问于 2010-04-20 19:44:07
回答 1查看 1.2K关注 0票数 0

我有一个主文本文件和异常文件,我想用主文件和递增计数器匹配异常文件中的所有单词,但诀窍是使用通配符。

我可以不用通配符,如下所示:

代码语言:javascript
运行
复制
words = %w(aaa aab acc ccc AAA)
stop = %q(/aa./)

words.each do |x|
    if x.match(/aa./)
     puts "yes for #{x}"        
    else    
     puts "no for #{x}"
    end
end

=>

代码语言:javascript
运行
复制
yes for aaa
yes for aab
no for acc
no for ccc
yes for AAA

同样,这将是最好的方式,使用数组或其他方式。

编辑:很抱歉给您带来了混乱。是的,stop有多个通配符,我希望根据这些通配符匹配所有单词。

代码语言:javascript
运行
复制
words = %w(aaa aab acc ccc AAA)
stop = %q(aa* ac* ab*)

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-04-20 22:18:35

对你的需求的描述非常模糊。但是partitionselect方法都可以为您工作:

代码语言:javascript
运行
复制
words = %w(aaa aab acc ccc AAA)
re = %r(aa.)i
p words.partition {|word| word.match(re)}  # => [["aaa", "aab", "AAA"], ["acc", "ccc"]]
p words.select {|word| word.match(re)}     # => ["aaa", "aab", "AAA"]

更新

根据你的上一条评论:

代码语言:javascript
运行
复制
stops= %q(aa* ac* ab*)
stops.split.collect do |wildcard| 
  re = Regexp.new(wildcard, Regexp::IGNORECASE)
  words.select {|word| word.match(re)} 
end
# => [["aaa", "aab", "acc", "AAA"], ["aaa", "aab", "acc", "AAA"], ["aaa", "aab", "acc", "AAA"]]

如果这些结果让您感到惊讶,那么您可能需要学习更多关于正则表达式的知识,正则表达式与glob样式的模式有很大的不同,而且功能更强大。Ruby不会对字符串进行全局匹配。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2674731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档