我有一个文档,其中的行包含电子邮件地址和 IP 地址。我需要按照电子邮件地址和 IP 地址拆分文档,以将文件中的每个 IP/电子邮件地址或单词存储在数组中。
有没有办法使用正则表达式/字符串标记器来查找电子邮件/IP 地址来执行此操作?我知道如何使用正则表达式/字符串标记器来逐行分隔句子中的单词。只是不确定如何查找电子邮件/IP 地址。 因为文件中可能包含@\//等非法字符,这些字符不应该包含在数组中。
例如我的文档包含:
您可以联系test@test.com,地址为192.168.1.1。
我的数组应包含:
你
可以
联系方式
test@test.com
地址
是
192.168.1.1
最佳答案
电子邮件地址的正则表达式是:
[\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));
这些可能工作得很好,但我还没有测试。
关于java - 用于在文件中查找电子邮件地址/IP 地址的字符串标记生成器/正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46555309/