정규 표현식은 '.'을 이스케이프 처리하지 않기 때문에 [a-z0-9]로 시작하고 끝나는 길이가 3 인 문자열과 일치합니다. 어떤 문자든지 의미합니다. 또한 괄호 안의 문자 집합을 반복해야합니다. 뒤에 마침표 하나 개 이상의 숫자 마지막 세 번 하나 개 이상의 숫자를 일치
[\d]*\.[\d]*\.[\d]*\.[\d]*
: 예를 들어, 당신은 같은 것을 사용할 수 있습니다. 즉, 양식 '123.456.789.101'의 모든 문자열에 대해 일치 항목을 얻을 수 있지만 '122533252.13242351432142.375547547.62463636'과 같은 항목도 있으므로 완전히 도움이되지는 않습니다. 점으로 구분 된 세 자리의 그룹과 일치하는 것입니다
[\d][\d][\d]\.[\d][\d][\d]\.[\d][\d][\d]\.[\d][\d][\d]
:
개선점, 그러나 완벽하지, 다음입니다. 당신이 초보자 있다면 이해하는 것이 훨씬 더 재미 있고 효과적인뿐만 아니라 더 어려운 뭔가 빨리 감기를 할 경우, 예를 사용할 수 있습니다
는 on this page을 발견, 즉 : 정확하지
\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b
당신이 필요로하는 것.
또한 matches() 메소드는 입력의 모든 부분이 아닌과 일치하므로 정규 표현식의 처음과 끝에 '. *'을 추가하고 자바 코드에서 실행할 수 있습니다 같은 :
Pattern p = Pattern.compile(".*\\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\b.*");
Matcher matcher = p.matcher(message);
if (matcher.matches()) System.out.println("It's a match");
당신은 당신이 대신 할 수있는 모든 IP를 찾아 하려면 : 학습 곡선은 가파른이지만
Pattern p = Pattern.compile("\\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\b");
Matcher matcher = p.matcher(message);
while (matcher.find()) System.out.println("Match: " + matcher.group());
정규 표현식에이 훌륭합니다. 그래서 행운을 빕니다!
일부 [정규식 가이드]를 판독한다 (http://www.regular-expressions.info/tutorial.html) 또는 질문을하기 전에 [[regex for IP] (http://stackoverflow.com/questions/106179/regular-expression-to-match-hostname-or-ip-address)를 검색하십시오. '.'는 특수 문자로 "새 줄 표시를 제외한 모든 문자"와'[a-z1-9]'는'az '또는'1-9 '범위의 * 하나 * 문자와 일치하므로 추가 할 필요가 있습니다. 한정어. 또한 IPv4와 일치시키고 싶다면'a-z'가 정규 표현식에서 무엇을하고 있습니까? – Pshemo
@Pshemo plsgogame의 대답에 대한 의견을 읽으십시오. – DonkeyCore
'jointhis.server.com'과 같은 호스트 네임을 찾으려면 이전에 언급 한 질문에 대한 답변을 꼭 읽어야합니다. – Pshemo