字符串 Tokenizer/Regex 在文件中查找电子邮件 address/IP 地址
String Tokenizer/Regex to find email address/IP Address in a file
我有一个包含电子邮件地址和 IP 地址的行的文档。我需要根据电子邮件地址和 IP 地址拆分文档,以将每个 IP/email 地址或文件中的单词存储在一个数组中。
有没有办法使用 regex/String Tokenizer 找到 email/IP 地址来做到这一点?我知道如何使用 regex/String Tokenizer 逐行分隔句子中的单词。只是不确定如何找到 email/IP 地址。
因为该文件可能包含不应该包含在数组中的非法字符,如 @ \ //。
例如我的文档包含:
可以联系test@test.com,地址是192.168.1.1。
我的数组应该包含:
你
可以
联系
测试@test.com
地址
是
192.168.1.1
这里有一个 regexr,其中包含一些示例和一个适合您的正则表达式。
正则表达式是(电子邮件部分是从 here 复制的,我也不肯定它复制并粘贴正确。):
(([^<>()\[\]\.,;:\s@\"]+(\.[^<>()\[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})|\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}
电子邮件地址的正则表达式是:
[\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));
这些可能工作正常,但我还没有测试。
我有一个包含电子邮件地址和 IP 地址的行的文档。我需要根据电子邮件地址和 IP 地址拆分文档,以将每个 IP/email 地址或文件中的单词存储在一个数组中。
有没有办法使用 regex/String Tokenizer 找到 email/IP 地址来做到这一点?我知道如何使用 regex/String Tokenizer 逐行分隔句子中的单词。只是不确定如何找到 email/IP 地址。 因为该文件可能包含不应该包含在数组中的非法字符,如 @ \ //。
例如我的文档包含:
可以联系test@test.com,地址是192.168.1.1。
我的数组应该包含:
你
可以
联系
测试@test.com
地址
是
192.168.1.1
这里有一个 regexr,其中包含一些示例和一个适合您的正则表达式。
正则表达式是(电子邮件部分是从 here 复制的,我也不肯定它复制并粘贴正确。):
(([^<>()\[\]\.,;:\s@\"]+(\.[^<>()\[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})|\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}
电子邮件地址的正则表达式是:
[\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));
这些可能工作正常,但我还没有测试。