First, this will be easiest if the desired string is always in the same format--eg _"user@example.com"_ (where "_" means space. Let's assume that is the case---here is a crude beginning:
"names" is the filename is used for the test.
cat names | sed -n 's/.*\( ".*@.*\..*" \).*/\1/p'
This uses the "backreference" feature of SED. Everything inside the escaped parentheses-- \(...)\ -- is substituted using \1
So....... It says call sed with no print option (-n), substitute the first occurence of the first expression with the backreference, and print that result.
The first expression reads as follows: "any # of characters, followed by the back-referenced expression, then followed by any number of characters."
In turn, the back-referenced expression is: "a space, then a ", then any # of characters, a @, any # of characters, a ., any #of characters, a ", and a space"
This will make a lot more sense after reading a good tutorial---eg:
http://www.grymoire.com/Unix/Sed.html#uh-8