Java 에서 정규표현식을 사용하는 방법이다.


정규표현식 사용법은 언어마다 달라서 헷갈리는 점이 있다.

하지만 뭐, 기본적인 사용법은 다 같으니까...


"size" 에서 "s,e" 두 글자를 찾아서 출력해보자.


import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
 
String text = "size";
Pattern p = Pattern.compile("[se]");   // s 또는 e 를 찾는 패턴
Matcher m = p.matcher(text);             // text 에서 패턴 검사를 수행한 결과들을 m 에 담는다.
ArrayList<string> listMatches = new ArrayList<string>();
 
while (m.find())
    System.out.println(m.group());    // m 의 그룹(결과)을 각각 출력한다.
 
m.reset();
 
while (m.find())
    listMatches.add(m.group());
    
System.out.println(listMatches);      // listMatches 에 담긴 m 의 그룹들을 출력한다.


s e [s,e]


2,3열 import

Java 의 정규표현식 패키지는 java.util.regex 이다.


11열 while(m.find())

조건문 while 에서 m.find() 가 아닌 m.match() 로 검사를 할 경우 출력이 되지 않는다. find() 는 패턴이 포함되었는가를 묻지만 match() 는 패턴과 완전히 일치하는가를 묻기 때문이다.


14열 m.reset()

find() 결과를 reset 한다. 파일 포인터를 초기화 하는 것과 비슷한 개념이다.


16열 m.find()

match 의 결과는 배열 형태로 저장되지 않기 때문에, list 와 같은 형태로 사용하고 싶다면 find() 와 group() 을 사용해 새로운 list 만들어줘야 한다. 



한편, String 클래스의 함수를 이용 하여 정규표현식을 사용할 수도 있다.

split() 함수는 String[] 을 반환하기 때문에, 그 결과를 배열 형태로 이용할 수 있다.


String text = "a+b";
System.out.println(text.split("\\W")[0]);

a