2017-10-04 8 views
1

전자 메일 주소와 IP 주소가 포함 된 줄이있는 문서가 있습니다. 전자 메일 주소와 IP 주소의 관점에서 문서를 분할하여 각 IP/전자 메일 주소 나 단어를 파일에 배열로 저장해야합니다.String Tokenizer/Regex에서 파일의 전자 메일 주소/IP 주소를 찾습니다.

regex/String Tokenizer를 사용하여 이메일/IP 주소를 찾는 방법이 있습니까? regex/String Tokenizer를 사용하여 한 줄씩 문장의 단어를 구분하는 방법을 알고 있습니다. 이메일/IP 주소를 찾는 방법을 모르겠습니다. 파일에 @ \ //와 같은 잘못된 문자가 포함될 수 있으므로 배열에 포함하면 안됩니다.

예를 들어 내 문서에 포함 당신은 [email protected] 문의 할 수 있습니다

, 주소가 192.168.1.1이다.

내 배열이 포함되어 있어야합니다

당신

접촉

[email protected]

주소

여기

192.168.1.1

+0

문자열을 토큰 화 한 다음 각 토큰에 대해 정규식을 실행하여 후속 일치 항목을 찾으십니까? 나는 이것이 당신이 필요로하는 것 같아요 : http://regexr.com/3gspa, RFC에 기반하여 모두 일치하는 정규 표현식을 만들었지 만 이것이 작동해야한다고 생각합니다. –

+0

예, 문자열을 토큰 화하고 싶습니다. . IP 주소와 전자 메일 주소는 포함 된 기호 때문에 별도의 토큰으로 분리되므로 토큰을 검색하기 위해 String Tokenizer를 사용할 수 없어서 문제가있었습니다. 도움 주셔서 감사합니다. – user100000001

답변

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)))) 

제 의견으로는및 호출 방법 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)); 

이 5 월은 잘 작동하지만 난 아직 테스트하지거야.

0

일부 예제와 당신을 위해 일해야 정규식과 regexr입니다.

정규식입니다

(전자 메일 부분이 here에서 복사, 나는 또한 복사 및 올바른 붙여 넣을 수 없습니다 확실 해요.) :

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

이것은 도움이됩니다. 감사! – user100000001