자바 정규식에서 메타문자 \s는 문자열 내의 모든 공백 문자(스페이스, 탭, 줄바꿈 등)와 일치합니다. 이 메타문자를 활용하면 문자열에 포함된 공백의 개수를 세거나, 공백을 완전히 제거하는 등 다양한 작업을 손쉽게 처리할 수 있습니다.
예제 1: 문자열에서 공백 개수 세기
아래 예제는 사용자로부터 문자열을 입력받은 후, \s 패턴을 사용해 공백 문자가 몇 번 나타나는지 계산합니다.
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String args[]) {
// 사용자로부터 문자열 입력받기
System.out.println("문자열을 입력하세요");
Scanner sc = new Scanner(System.in);
String input = sc.nextLine();
String regex = "\\s";
// 정규식 컴파일
Pattern pattern = Pattern.compile(regex);
// Matcher 객체 생성
Matcher matcher = pattern.matcher(input);
int count = 0;
while(matcher.find()) {
count++;
}
System.out.println("공백 개수: " + count);
}
}실행 결과
문자열을 입력하세요 Hello how are you welcome to tutorialspoint 공백 개수: 6
예제 2: 문자열에서 모든 공백 제거하기
정규식 \s+는 하나 이상의 연속된 공백 문자를 의미합니다. 이 패턴과 replaceAll() 메서드를 함께 사용하면 문자열에서 모든 공백을 한 번에 제거할 수 있습니다.
import java.util.Scanner;
public class RegexExample {
public static void main(String args[]) {
// 정규식: 하나 이상의 공백 문자
String regex = "\\s+";
System.out.println("값을 입력하세요: ");
Scanner sc = new Scanner(System.in);
String input = sc.nextLine();
String result = input.replaceAll(regex, "");
System.out.println("결과: " + result);
}
}실행 결과
값을 입력하세요: hello how are you 결과: hellohowareyou
핵심 정리
- \s : 단일 공백 문자(스페이스, 탭, 줄바꿈 등) 하나와 일치합니다.
- \s+ : 하나 이상의 연속된 공백 문자와 일치하므로, 여러 개의 공백도 한 번에 처리할 수 있습니다.
Pattern.compile()과Matcher를 사용하면 패턴 매칭 횟수를 세거나 위치를 확인할 수 있습니다.replaceAll()메서드를 사용하면 일치하는 모든 부분을 다른 문자열로 간편하게 치환할 수 있습니다.