在 java 中取一部分字符串
take a part of a string in java
我有一个字符串,其中包含 4 个属性,它们之间有 3 个空格(姓名、姓氏、电子邮件、电话)。例如:
"Mike Tyson mike@hotmail.com 0 999 999 99 99"
我需要从这个字符串中获取电子邮件。我搜索了正则表达式和标记,但找不到任何东西。谢谢。
使用以下代码片段 -
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());
}
}
}
您可以使用以下方法提取第 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));
}
split
您的字符串使用 3 个空格来获取标记数组
- 取你感兴趣的token(这里会被索引为
[2]
)
String string = "Mike Tyson mike@hotmail.com 0 999 999 99 99";
System.out.println(string.split(" ")[2]); // your email
很简单。使用方法 split
获取字符串数组并调用所需元素进行索引。
一个班轮...
String s = "Mike Tyson mike@hotmail.com 0 999 999 99 99";
String email = s.trim().split(" ")[2];
根据 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));
}
}
[^ ]*@[^ ]*
匹配 @
字符周围的任何字符(space 除外)。
我有一个字符串,其中包含 4 个属性,它们之间有 3 个空格(姓名、姓氏、电子邮件、电话)。例如:
"Mike Tyson mike@hotmail.com 0 999 999 99 99"
我需要从这个字符串中获取电子邮件。我搜索了正则表达式和标记,但找不到任何东西。谢谢。
使用以下代码片段 -
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());
}
}
}
您可以使用以下方法提取第 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));
}
split
您的字符串使用 3 个空格来获取标记数组- 取你感兴趣的token(这里会被索引为
[2]
)
String string = "Mike Tyson mike@hotmail.com 0 999 999 99 99";
System.out.println(string.split(" ")[2]); // your email
很简单。使用方法 split
获取字符串数组并调用所需元素进行索引。
一个班轮...
String s = "Mike Tyson mike@hotmail.com 0 999 999 99 99";
String email = s.trim().split(" ")[2];
根据 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));
}
}
[^ ]*@[^ ]*
匹配 @
字符周围的任何字符(space 除外)。