I have a String extension:
func replaceLastWordWithUsername(_ username: String) -> String {
    let pattern = "@*[A-Za-z0-9]*$"
    do {
        Log.info("Replacing", self, username) 
        let regex = try NSRegularExpression(pattern: pattern, options: NSRegularExpression.Options.caseInsensitive)
        let range = NSMakeRange(0, self.characters.count)
        return regex.stringByReplacingMatches(in: self, options: [], range: range, withTemplate: username )
    } catch {
        return self
    }
}
let oldString = "Hey jess"
let newString = oldString.replaceLastWordWithUsername("@jessica")
newString now equals Hey @jessica @jessica.  The expected result should be Hey @jessica