在Ruby中将字符串与关键字匹配的简单方法?

时间:2018-08-26 15:14:10

标签: ruby-on-rails ruby regex

我允许用户放置关键字,如果有人使用这些关键字创建项目,则用户会收到电子邮件警报。

但是我有一个问题,我想我需要正则表达式,但是我不知道怎么做。 例如,如果用户在关键字中输入“ UX”,则当有人用“ veUX”(法文)一词创建项目时,他将收到电子邮件。

在Ruby中,我需要检查字符串中的关键字是否为单词(例如,前后带有空格),而不是单词中的字符。

你知道我该怎么办吗?

这是我的工作:

  def common_keywords_email_alert?(user, project)
    name_description = I18n.transliterate([project.name.downcase, project.description.downcase].join(' '))
    user.email_alert.keywords&.any? do |keyword|
      user.email_alert.keywords.join(' ')
      name_description.include?(keyword)
    end
  end

非常感谢

1 个答案:

答案 0 :(得分:1)

您正在寻找边界指令\ b(https://www.regular-expressions.info/wordboundaries.html):

regex = /\bUX\b/
"blah".match(regex) # => nil
"veUX".match(regex) # nil
"my UX".match(regex) # => #<MatchData "UX">
"UX".match(regex) # => #<MatchData "UX">
"UX is great".match(regex) # => #<MatchData "UX">