java - 用于在文件中查找电子邮件地址/IP 地址的字符串标记生成器/正则表达式

标签 java regex tokenize stringtokenizer

我有一个文档,其中的行包含电子邮件地址和 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/

相关文章:

keras - 训练测试拆分之前或之后的处理

Java 用变量文本替换字符串

Java - 代码不断返回 'error: incompatible types: Object cannot be converted to int'

java - 如何知道一个 JSP 文件是否被另一个文件包含?

python - 正则表达式:如何连续查找 3 个或更多匹配项,而不仅仅是一一匹配

java - 使用正则表达式生成字符串而不是匹配它们

java - 如何在 Kotlin 的公共(public)池下创建单线程协程上下文?

regex - ProFTPd 的正则表达式

azure - 如何在Azure搜索索引中获取字符匹配而不是子字符串

java - 在 Java 中将字符串转换为 token 数组