我有一个我正在解析的文件,它总是包含一个电子邮件地址。该文件当前布局在 之前有一个前导空格@
,我们要捕获域。
foo @bar.com more data here
foo @foo.com more data here
我们想退出@bar.com
,@foo.com
而我刚刚开始使用正则表达式。我正在尝试在单词边界的开头提取模式“@”,包括所有后续字符,直到下一个单词边界“。
我已经尝试了以下的各种迭代,将事物分组,文字的方形后援@
......但似乎没有任何效果。
编辑 - 实际代码:
import java.util.regex.*;
import java.io.*;
import java.nio.file.*;
import java.lang.*;
//
public class eadd
{
public static void main(String args[])
{
String inputLine = "foo foofoo foo foo @bar.com foofoofoo foo foo foo";
String eDomain = "";
// parse eadd
Pattern p2 = Pattern.compile("(\\b@.*\\b)");
Matcher m2 = p2.matcher(inputLine);
if(m2.matches()) {
eDomain = m2.group(1);
} else {
eDomain = "n/a";
}
System.out.println(p2+" "+m2+" "+eDomain);
}
}
以及我运行它时的结果。
(\b@.*\b) java.util.regex.Matcher[pattern=(\b@.*\b) region=0,49 lastmatch=] n/a
我的所有问题都与@
被搜索为文字而不是模式之后的内容有关(例如,寻找.*
而不是any and all characters
)。我找不到@
作为控制角色的参考资料,所以我认为我不需要逃跑。
Oracle的java教程或文档中没有类似的例子,SO,也没有我查过的任何在线资源;我一直无法找到人们如何处理这个问题的其他样本。就像我说的,我对正则表达式相当陌生,但这在我看来应该对我有用。我错过了什么?