java.util.regex 패키지의 Pattern 클래스는 정규 표현식(regular expression)을 컴파일한 결과를 나타내는 클래스입니다.
이 클래스가 제공하는 split() 메서드는 입력 문자열을 나타내는 CharSequence 객체를 매개변수로 받으며, 정규 표현식이 일치하는 지점마다 주어진 문자열을 새로운 토큰으로 분리하고, 모든 토큰을 담고 있는 문자열 배열(String 배열)을 반환합니다.
split() 메서드 기본 사용 예제
아래 예제에서는 숫자 앞뒤에 공백이 있는 패턴을 기준으로 문자열을 분리하는 방법을 보여줍니다.
import java.util.regex.Pattern;
public class SplitMethodExample {
public static void main( String args[] ) {
// 숫자를 찾기 위한 정규 표현식
String regex = "(\\s)(\\d)(\\s)";
String input = " 1 Name:Radha, age:25 2 Name:Ramu, age:32 3 Name:Rajev, age:45";
// 정규 표현식 컴파일
Pattern pattern = Pattern.compile(regex);
// 일치 여부 확인
if(pattern.matcher(input).find())
System.out.println("Given String contains digits");
else
System.out.println("Given String does not contain digits");
// 문자열 분리
String strArray[] = pattern.split(input);
for(int i=0; i<strArray.length; i++){
System.out.println(strArray[i]);
}
}
}실행 결과
Given String contains digits Name:Radha, age:25 Name:Ramu, age:32 Name:Rajev, age:45
위 예제에서 정규 표현식 (\s)(\d)(\s)는 '공백 + 한 자리 숫자 + 공백' 형태의 패턴을 의미하며, 이 패턴과 일치하는 부분을 구분자로 삼아 문자열이 분리됩니다.
limit 매개변수를 활용한 분리 횟수 제한
split() 메서드는 정규 표현식이 적용되는 최대 횟수를 지정하는 정수 값을 추가로 전달할 수 있습니다. 즉, limit 값을 지정하면 반환되는 배열의 길이를 원하는 대로 조절할 수 있습니다.
import java.util.regex.Pattern;
public class SplitMethodExample {
public static void main( String args[] ) {
// 숫자를 찾기 위한 정규 표현식
String regex = "(\\s)(\\d)(\\s)";
String input = " 1 Name:Radha, age:25 2 Name:Ramu, age:32" + " 3 Name:Rajeev, age:45 4 Name:Raghu, age:35" + " 5 Name:Rahman, age:30";
// 정규 표현식 컴파일
Pattern pattern = Pattern.compile(regex);
// 일치 여부 확인
if(pattern.matcher(input).find())
System.out.println("Given String contains digits");
else
System.out.println("Given String does not contain digits");
// limit을 4로 지정하여 문자열 분리
String strArray[] = pattern.split(input, 4);
for(int i=0; i<strArray.length; i++){
System.out.println(strArray[i]);
}
}
}실행 결과
Given String contains digits Name:Radha, age:25 Name:Ramu, age:32 Name:Rajeev, age:45 4 Name:Raghu, age:35 5 Name:Rahman, age:30
위 예제에서는 limit 값으로 4를 지정했기 때문에, 패턴은 처음 세 번만 적용되고 나머지 남은 문자열 전체가 마지막 배열 요소로 그대로 포함됩니다. 이처럼 limit 매개변수를 활용하면 문자열이 분리되는 횟수를 제어할 수 있어, 필요한 만큼만 잘라내고 싶을 때 유용하게 사용할 수 있습니다.