我如何从字符串行中删除所有内容并获取与模式匹配的信息?
例如,我有一些字符串作为输入:
我正在使用Pattern检查String是否包含电子邮件或数字,但是我不知道如何从中删除所有其他String并仅获取匹配的内容
一些建议或示例?
int start,end,length;
String text ="bleble blabbl myexample@ex.com blabla"
Pattern emailP = Pattern.compile(".+@.+\\.com");
Matcher matcherEmail =emailP.matcher(text);
if (matcherEmail.find()) {
start=matcherEmail.start();
//substring
tekst=tekst.substring(0,start);
Matcher matcherEmail =emailP.matcher(text);
end=matcherEmail.end();
length=text.length();
tekst=text.substring(end,length);
}
那么,会是这样吗? 删除匹配模式之前和之后的所有内容 我需要检查String 2次吗?
答案 0 :(得分:0)
您的正则表达式.+@.+\.com
匹配包含空格的1个以上字符,@
匹配包含空格的1个以上字符。请注意,.+
是贪婪的,并且会一直匹配到字符串的末尾,并且只会匹配more than,只是一个电子邮件地址。
匹配而不是删除不是电子邮件地址的一种可能性是匹配并使用\S
而不是.+
来匹配非空格字符:
\S+@\S+\.com\b
在Java中:
String regex = "\\S+@\\S+\\.com\\b";
String text ="bleble blabbl myexample@ex.com blabla";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
System.out.println(matcher.group(0));
}
要获取电话号码,可以将regex与capturing group结合使用。