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

Java 정규식(RegEx)으로 공백이 아닌 문자를 매칭하는 방법

Java 정규식에서는 메타 문자 \S를 사용하여 공백이 아닌(non-whitespace) 문자를 매칭할 수 있습니다.

대문자 \S는 공백, 탭, 줄바꿈 등 모든 화이트스페이스를 제외한 단일 문자와 일치합니다. 반대로 소문자 \s는 화이트스페이스 자체를 의미하므로, 두 메타 문자의 차이를 혼동하지 않도록 주의해야 합니다.

예제 코드

아래 예제는 사용자로부터 문자열을 입력받은 뒤, 정규식 \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);
    }
}

코드 설명

  • Pattern.compile(regex): 문자열 "\\S"를 정규식 패턴으로 컴파일합니다. Java 문자열에서 역슬래시는 이스케이프 문자이므로 \\S로 표기해야 합니다.
  • pattern.matcher(input): 입력 문자열에 대해 매칭 작업을 수행할 Matcher 객체를 반환합니다.
  • matcher.find(): 일치하는 문자를 하나씩 순차적으로 찾으며, 발견될 때마다 카운트를 1씩 증가시킵니다.

실행 결과

문자열을 입력하세요
Hello how are you welcome to tutorialspoint
공백을 제외한 문자 수: 37

입력된 문장에는 총 41개의 문자 중 공백 4개가 포함되어 있으므로, 공백을 제외한 37개의 문자가 카운트된 것을 확인할 수 있습니다.