Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java 정규식 \s 메타문자 완벽 가이드: 공백 문자 매칭 방법

Java 정규식에서 \s 메타문자란?

Java 정규식(Regular Expression)에서 \s 메타문자는 공백 문자(white space)와 일치하는 하위 표현식입니다. 여기서 공백 문자에는 스페이스바, 탭(\t), 줄바꿈(\n), 캐리지 리턴(\r), 폼 피드(\f) 등이 모두 포함됩니다.

Java 코드에서는 문자열 내에서 백슬래시가 이스케이프 문자로 해석되기 때문에, 정규식 패턴을 작성할 때 "\\s"처럼 백슬래시를 두 번 사용해야 합니다.

예제 1: 공백 문자 개수 세기

다음 예제는 입력 문자열에서 공백 문자가 몇 번 나타나는지 세어 출력합니다.

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexExample {
    public static void main(String args[]) {
        String regex = "\\s";
        String input = "Hello how are you welcome to Tutorialspoint !";
        
        Pattern p = Pattern.compile(regex);
        Matcher m = p.matcher(input);
        
        int count = 0;
        while(m.find()) {
            count++;
        }
        System.out.println("매칭된 개수: " + count);
    }
}

실행 결과

매칭된 개수: 7

입력 문자열에 단어 사이의 공백이 총 7개 있으므로, \s 메타문자는 각 공백을 하나씩 찾아내 7을 출력합니다.

예제 2: 불필요한 연속 공백 제거하기

다음 예제는 사용자로부터 문자열을 입력받은 후, 단어 사이에 있는 불필요한 연속 공백들을 하나의 공백으로 정리합니다. 이때 정규식 \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);
        
        // 모든 공백 문자를 단일 공백으로 대체
        String result = matcher.replaceAll(" ");
        
        System.out.print("공백 정리 후 텍스트: \n" + result);
    }
}

실행 결과

문자열을 입력하세요
hello this is a sample text with irregular spaces
공백 정리 후 텍스트:
hello this is a sample text with irregular spaces

정리

  • \s: 공백 문자 하나(스페이스, 탭, 줄바꿈 등)와 일치합니다.
  • \s+: 하나 이상의 연속된 공백 문자와 일치하며, 여러 개의 공백을 한 번에 처리할 때 유용합니다.
  • Java에서 정규식을 작성할 때는 백슬래시를 두 번(\\s) 입력해야 합니다.
  • Matcher 클래스의 replaceAll() 메서드를 활용하면 매칭된 부분을 손쉽게 다른 문자열로 대체할 수 있습니다.