我有一个字符串,其中包含4个属性,它们之间有3个空格(姓名,姓氏,电子邮件,电话)。例如:
"Mike Tyson mike@hotmail.com 0 999 999 99 99"
我需要从这个字符串中接收电子邮件。我搜索了正则表达式和令牌,但找不到任何东西。谢谢。
答案 0 :(得分:4)
split
您的字符串使用3个空格来获取令牌数组rcorr(x, y)$n[1,2]
)答案 1 :(得分:2)
您可以使用以下内容并提取第1组:
^[^\\s]+\\s+[^\\s]+\\s+([^\\s]+)
代码:
String str = "Mike Tyson mike@hotmail.com 0 999 999 99 99";
Matcher matcher = Pattern.compile("^[^\\s]+\\s+[^\\s]+\\s+([^\\s]+)").matcher(str);
while (matcher.find()) {
System.out.println(matcher.group(1));
}
答案 2 :(得分:1)
使用以下代码段 -
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ExtractMail{
public static void main(String[] args){
String str = "Mike Tyson mike@hotmail.com 0 999 999 99 99";
Matcher matcher = Pattern.compile("[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\.[a-zA-Z0-9-.]+").matcher(str);
while (matcher.find()) {
System.out.println(matcher.group());
}
}
}
答案 3 :(得分:1)
String string = "Mike Tyson mike@hotmail.com 0 999 999 99 99";
System.out.println(string.split(" ")[2]); // your email
很简单。使用方法split
获取String数组并调用所需的元素进行索引。
答案 4 :(得分:1)
一个班轮......
String s = "Mike Tyson mike@hotmail.com 0 999 999 99 99";
String email = s.trim().split(" ")[2];
答案 5 :(得分:1)
根据OP的要求,这是一个带有Regex的版本:
public static void test()
{
String str = "Mike Tyson mike@hotmail.com 0 999 999 99 99";
Matcher matcher = Pattern.compile("[^ ]*@[^ ]*").matcher(str);
while (matcher.find()) {
System.out.println(matcher.group(0));
}
}
[^ ]*@[^ ]*
匹配@
字符周围的任何字符(空格除外)。