簡體   English   中英

字符串令牌生成器/正則表達式可在文件中查找電子郵件地址/ IP地址

[英]String Tokenizer/Regex to find email address/IP Address in a file

我有一個包含行的文檔,其中包含電子郵件地址和IP地址。 我需要按照電子郵件地址和IP地址來拆分文檔,以將每個IP /電子郵件地址或單詞存儲在數組中的文件中。

有沒有辦法使用正則表達式/字符串令牌生成器來查找電子郵件/ IP地址來執行此操作? 我知道如何使用regex / String Tokenizer逐行分隔句子中的單詞。 只是不確定如何找到電子郵件/ IP地址。 因為該文件可能包含非法字符,例如@ \\ //,所以不應將其包含在數組中。

例如,我的文檔包含:

您可以聯系test@test.com,地址為192.168.1.1。

我的數組應包含:

能夠

聯系

test@test.com

地址

192.168.1.1

這是一個帶有一些示例的regexr和一個適合您的regex。

正則表達式是(電子郵件部分是從此處復制的,我也不肯定復制並正確粘貼了它。):

(([^<>()\[\]\.,;:\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));

這些可能工作正常,但我尚未測試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM