ruby - 在这种情况下,正则表达式比数组比较快吗?

标签 ruby regex arrays performance parsing

假设我有一个传入的字符串,我想扫描它以查看它是否包含我选择为“坏”的任何词。 :)

将字符串拆分成一个数组,并将坏词保存在一个数组中,然后遍历每个坏词以及每个传入的词,看看是否有匹配项是否更快,有点像:

badwords.each do |badword|
 incoming.each do |word|
  trigger = true if badword == word
 end
end

或者这样做是否更快:

incoming.each do |word|
 trigger = true if badwords.include? word
end

或者保留字符串原样并使用看起来像这样的正则表达式运行 .match() 是否更快:

/\bbadword1\b|\bbadword2\b|\bbadword3\b/

或者性能差异几乎完全可以忽略不计?想知道这个问题有一段时间了。

最佳答案

您通过在找到匹配项时不停止循环来为正则表达式提供优势。尝试:

incoming.find{|word| badwords.include? word}

我的钱仍然在正则表达式上,但应该简化为:

/\b(badword1|badword2|badword3)\b/

或者让它成为一场公平的战斗:

/\a(badword1|badword2|badword3)\z/

关于ruby - 在这种情况下,正则表达式比数组比较快吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12234019/

相关文章:

javascript - 为什么 EventMachine 比 Node 慢那么多?

ruby-on-rails - ActionMailer - 使用原始 RFC822 邮件的附件创建新邮件

javascript - REGEXP js 点不起作用

java - 需要一种接受多封电子邮件的模式

python - 将元素从for循环Python 3放入新数组中

javascript - 使用 .filter 删除 React 中的函数

ruby - 使用 Mechanize 记录 GET 请求 URL

ruby - 当我运行 "gem list"时, bundler (默认 : 1. 16.2)是什么意思?什么是(默认)部分?

regex - 如何在Python中使用正则表达式从字符串中获取日期?

JavaScript 推送返回一个空数组