我正在尝试编写一个方法,该方法接受通过以下格式的表单输入的字符串:
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/