본문 바로가기
Tech-Java

Java에서 정규표현식(Regular Expression) 사용하기

by redcrow 2016. 11. 6.

1. 정규 표현식(Regular Expression)


정규표현식 : 일정한 패턴을 가진 문자열을 표현할 때 사용하는 형식 언어



2. 정규 표현식 기초


훨씬 더 많은 표현이 있지만 정규표현식 자체가 많이 난해하므로 몇가지 쉬운 것부터 시작합니다.


1) + : 바로 앞 글자가 1 or more repetition

2) * :  바로 앞 글자가 0 or more

3) | :  Or

4) [] : match anything in this set

5) [-] : range

6) [^] : Not any character in this set


예) 문자열 "I eat it a little more 3 4 5 5!" 라는 text에서 문자열 패턴을 찾아 배열로 리턴하는  getToken(regEx)이라는 함수가 있다고 가정하면 다음의 예제는 이런 결과를 준다. (Coursera , Data Structures and Performance 과정 예제)


1) String [] words = text.split(" +");  => {"I","eat","it","a","little","more","3","4","5","5!"}

2) text.getToken("it")  => {"it","it"}

3) text.getToken("it+") => {"it","itt"}

4) text.getToken("it+") => {"it","itt"}

5) text.getToken("it*") => {"i","it" , "itt"}

6) text.getToken("at|it*") => {"at","it" , "it"}

7) text.getToken("[345]") => {"3","4","5","5"}

8) text.getToken("[3-5]") => {"3","4","5","5"}

9) text.getToken("[^a-z35]") => {" ","4","!"}



3. Java에서 정규식을 사용한 패턴 매칭 (java.util.regex.Pattern)


1) Matcher Pattern.matcher(CharSequence input) 


Pattern p = Pattern.compile("it+"); 

Matcher m = p.matcher("I eat it a little more 3 4 5 5!"); 


System.out.println(m.matches());  


=> 정규표현식의 패턴이 전제 문자열의 패턴과 동일한지 체크. 이 경우 false 출력


Pattern p = Pattern.compile("it+"); 

Matcher m = p.matcher("itttt");

System.out.println(m.matches()); 


=> true 출력


2) Pattern.matches(String regExp, String s) => 문자열 s가 정규식 regExp를 만족하는 문자열인지 체크


String regExp = "(02|010|011)-\\d{3,4}-\\d{4}"; //{3,4} 3개혹은 4개

                                                                // 02-222-1111 / 02-1234-5678


String data = "010-123-5678";

boolean result = Pattern.matches(regExp, data);

if(!result){

System.out.println("정규식과 일치하지 않습니다.");

}else{

System.out.println("정규식과 일치합니다.");

}



4. Java에서 정규식을 사용한 패턴 매칭 2 (Pattern class 이외)


1) 




댓글