使用正则表达式通过循环解析以仅显示匹配结果?

Using regex to parse through loop to display only matching results?

问题: 我遇到了匹配特定正则表达式的循环结果的问题。

我正在尝试使用 Twitter API 生成用户名 (username2),该用户名在另一个用户 (username) 上发推文,我在我的 控制器中创建了这个:

@user_results = TwitterApi.client.search("to:username1", result_type: "recent").take(10).collect do |tweet|
     puts "#{tweet.user.screen_name}" if tweet.user.screen_name.gsub(/\A^username2\z.*/)

然后在我的视图中像这样循环:

<% @user_results.each do |user| %>
  <%= user %>
  <% end %>

即使应该是结果,也没有任何结果。

如果我用 "#{tweet.user.screen_name}".gsub(/\A^username2\z.*/)

结果:

<Enumerator:0x00007fb3a4b2f2a0>

我也试过了:

tweet.user.screen_name.gsub(/\A^username2\z.*/) { |match| "#{tweet.user.screen_name}"}

但它会生成所有结果而不是要匹配的结果

如果我丢掉 puts "#{tweet.user.screen_name}" if tweet.user.screen_name.gsub(/\A^username2\z.*/) 并只使用 "#{tweet.user.screen_name}",这会很好用。这样,所有用户名都会出现。

我使用的正则表达式如果正确并且适用于 Regx101 网站中的所有变体。

我希望只有出现特定用户名时才会出现结果或为真。

我做错了什么?是控制器片段还是视图端?

总的来说,我希望能够得到用户名,并给出一个真实的 ||假的。

   tweet.user.screen_name if tweet.user.screen_name.match('username2')

这匹配 ()

中的任何正则表达式或字符串

我的决赛是这样的:

TwitterApi.client.search("to:username", result_type: "recent").take(10).collect do |tweet|
       tweet.user.screen_name if tweet.user.screen_name.match(/#{@record.username}/i)
end

无论大小写不敏感,这样结果都是真实的