我正在尝试编写一个方法,该方法接受通过以下格式的表单输入的字符串:

string = "@user1, @user2, @user3"

并返回一个类似['user1', 'user2', 'user3']的数组。
这就是我目前所拥有的:
usernames = "@user1, @user2"

temp_recipient_usernames = usernames.split(',')
recipient_usernames = temp_recipient_usernames.each do |u|
  u.gsub /@(\w+)/ do |username|
    @final_usernames = username.gsub('@', '')
  end
end

p @final_usernames

这只返回字符串"user2"我怎样才能让它工作?

最佳答案

你正在重新发明轮子,这里的String#scan方法正是为了你的目的:

usernames = "@user1, @user2"
usernames.scan(/(?<=@)\w+/)
# => ["user1", "user2"]

更新:考虑到usernames字符串始终采用您描述的格式,即它只包含@前缀的usenames、逗号和空格;regexp可以变得简单一些:
usernames.scan(/\w+/)
# => ["user1", "user2"]

关于ruby - 正则表达式匹配以“@”字符为前缀的用户名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22282485/

10-13 08:51