1

这是我用于标签提取的正则表达式

def extract_hashtags
       hashtag_regex = /\B#(\w+)/i
       text_hashtags = content.scan(hashtag_regex)
       text_hashtags.each do |tag|
         hashtags.create hashtags: tag
       end
     end

使用/\B#(\w+)/i, 将其留在数据的前面

例如提取应该是“abcd”,但保存为“--- - abcd”

为了仅提取#abcd,应该将正则表达式更改为什么?

如果帖子内容(提取主题标签的位置)类似于“Hello stackoverflow #stackoverflow”,它会以“--- stackoverflow”的形式保存到数据库中

4

2 回答 2

4
test = "Hello stackoverflow #stackoverflow"
test.scan( /\B#(\w+)/i )
 => [["stackoverflow"]]

我怀疑您正在存储数组["stackoverflow"],并且从结果字符串中,您的存储是否使用 YAML 来处理结构化数据?

我认为您只想更改创建行:

text_hashtags.each do |tag|
  hashtags.create hashtags: tag[0]
end
于 2013-05-01T05:51:00.073 回答
2

在将"--- -"数组转换为 YAML 时,Rails 的数据库层会预先添加 。"---"是 YAML 前缀,"-"表示数组的第一个元素。

当你从数据库中读回它时,Rails 将进行逆变换:它将重建原始数组,并删除破折号。

于 2013-05-01T05:52:22.333 回答