String Tokenizer / Regex用于在文件中查找电子邮件地址/ IP地址

时间:2017-10-04 00:25:50

标签: java regex tokenize stringtokenizer

我的文档中包含电子邮件地址和IP地址。我需要根据电子邮件地址和IP地址拆分文档,以便将文件中的每个IP /电子邮件地址或单词存储在一个数组中。

有没有办法使用正则表达式/字符串标记符来查找电子邮件/ IP地址来执行此操作?我知道如何使用regex / String Tokenizer逐行分隔句子中的单词。只是不确定如何找到电子邮件/ IP地址。 因为该文件可能包含@ \ //之类的非法字符,这些字符不应包含在数组中。

例如,我的文档包含:

您可以联系test@test.com,地址是192.168.1.1。

我的数组应包含:

可以

接触

test@test.com

地址

192.168.1.1

2 个答案:

答案 0 :(得分:0)

这是一个regexr,其中包含一些适用于您的示例和正则表达式。

正则表达式(电子邮件部分是从here复制的,我也不肯定它复制并粘贴正确。):

(([^<>()\[\]\.,;:\s@\"]+(\.[^<>()\[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})|\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}

答案 1 :(得分:0)

电子邮件地址的正则表达式是:

[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?

IP地址的正则表达式是:

((?:(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d))))

在我看来,您可以使用java.util.regex.Matcher并调用方法matcher.group(0),如:

 Pattern p = Pattern.compile("<your regex here>");
 Matcher m = p.matcher(str);
 List<String> strs = new ArrayList<>();
 while (m.find())
     strs.add(m.group(0));

这些可能很好,但我还没有测试。