나는 그들에게 익숙하지 않고 자바 구문 "matches"에 문제가 있습니다.여러 정규 표현식
나는 지금은 정규 표현식 첫 번째 파일을 얻으려면 하나는 다른 하나는 Conf.xml.
입니다 111.123.399.555.xml
두 개의 파일이 있습니다.
string.matches("[1-9[xml[.]]]");
does not work.
어떻게 하시겠습니까?
나는 그들에게 익숙하지 않고 자바 구문 "matches"에 문제가 있습니다.여러 정규 표현식
나는 지금은 정규 표현식 첫 번째 파일을 얻으려면 하나는 다른 하나는 Conf.xml.
입니다 111.123.399.555.xml
두 개의 파일이 있습니다.
string.matches("[1-9[xml[.]]]");
does not work.
어떻게 하시겠습니까?
[]
은 캡처 그룹이 아닌 문자 클래스 그룹을 만들기 때문에 string.matches("[1-9[xml[.]]]");
을 사용할 수 없습니다. 이 의미
자바에, 당신의 표현이 있다는 것입니다 "match any of: [1-to-9 [or x, or m, or l [or *any*]]]"
말 (* 모든 * 당신이 .
를 탈출하지 않았고, 그것으로,이 a match any character
명령을 생성하기 때문에 여기에) 중요
을 :
"\"는 java에서 리터럴 이스케이프 문자로 인식되며 실제 일치 프로그램의 이스케이프 문자 ("\"이지만 문자열 형식 임)로 일치 프로그램에 전송되도록하려면 자체가 있어야합니다 따라서, "\"를 정규 표현 자에 사용하려는 경우에는 실제로 "\\"를 사용해야합니다.
이
당신이 그것을 사용하지 않는,하지만 보내, 정리해 때 조금 혼란 인 는 "\"를 정규로 일치 할 경우 는 "사용해야 할 수도 있습니다 실제 \\\\ "! 첫 번째 "\\"는 정규 표현식에 "\"가되고, 문자 문자와 두 번째 "\\"는 첫 번째 이스케이프 문자로 실제 "\"문자열이됩니다!은 "#"는 항상 숫자됩니다 ###.###.###.###.xml
패턴과 일치하는 올바른 패턴 문자열, string.matches("(\\d{3}\\.){4}xml")
이며, 다음과 같이 작동 방식은 다음과 같습니다
\\d
= A 일치합니다 한 자리 문자. [0-9]
을 사용하는 과 동일합니다.{3}
은 이전 \\d
에 대해 "정확히 3 번"과 일치하는 것으로 지정합니다. 그러므로 일치하는 ###
.\\.
은 단일 점 문자와 일치합니다.()
은 "이것은 캡처 링 그룹입니다"라고 말합니다. 일치 프로그램에 입니다. 다음 {4}
에 의해 사용되므로 일치 항목 이 전체 ###.
그룹을 정확히 4 번 생성하여 일치 항목 ###.###.###.###.
을 생성합니다.xml
은 정확히 "xml"과 일치합니다. 이전 항목에서이 패턴과 정확히 일치하는 패턴은 "###.###.###.###.xml
"입니다. 추가 학습을위한 는
string.matches("[1-9.]+\\.xml")
해야합니다.
[1-9.]+
은 1과 9 사이 및/또는 마침표 사이의 하나 이상의 숫자와 일치합니다. (+
은 "하나 이상"을 의미하고, *
은 "0 이상"을 의미하고, ?
은 "0 또는 1"을 의미 함).\.xml
은 .xml
과 일치합니다. .
은 정규 표현식에서 "임의의 문자"를 의미하기 때문에 문자 그대로의 기간을 의미하기를 원한다면이 문자를 이스케이프해야합니다 : \.
(자바 문자열이므로 백 슬래시 자체를 두 배로 이스케이프 처리해야 함).
Java's Pattern docs.을 읽을 당신이'/ ([1-9] {3} \.) {4} XML /'하시겠습니까?를 – Bergi
나는 진짜 간단한 개요를주기 위해 [blog post] (http://xisb.wordpress.com/2012/05/09/what-absolutely-every-programmer-should-know-about-regular-expressions/)를 썼다. 정규 표현식에서 모든 사람들이 알아야 할 절대적인 기초 더 자세한 내용을 이해하는 데 도움이 될지도 모릅니다. – stema