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

Java 정규식으로 문자열에서 각 단어(영어) 추출하는 방법

Java에서 문자열에 포함된 각 영어 단어를 개별적으로 추출하려면 정규식 "[a-zA-Z]+"를 활용할 수 있습니다. 이 표현식은 영어 알파벳이 하나 이상 연속으로 나타나는 부분, 즉 단어 전체와 일치합니다.

정규식을 사용해 입력 문자열에서 각 단어를 추출하는 절차는 다음과 같습니다.

  • Pattern 클래스의 compile() 메서드를 사용하여 위 정규식을 컴파일합니다.

  • Pattern 클래스의 matcher() 메서드에 대상 입력 문자열을 매개변수로 전달하여 Matcher 객체를 생성합니다.

  • 마지막으로 find() 메서드로 일치 항목을 찾고, group() 메서드를 호출하여 일치한 문자열(단어)을 가져옵니다.

예제 코드

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

public class EachWordExample {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("샘플 텍스트를 입력하세요: ");
        String data = sc.nextLine();
        String regex = "[a-zA-Z]+";
        // Pattern 객체 생성
        Pattern pattern = Pattern.compile(regex);
        // Matcher 객체 생성
        Matcher matcher = pattern.matcher(data);
        System.out.println("입력 문자열의 단어들: ");
        while(matcher.find()) {
            System.out.println(matcher.group());
        }
    }
}

실행 결과

샘플 텍스트를 입력하세요:
Hello this is a sample text
입력 문자열의 단어들:
Hello
this
is
a
sample
text

코드 설명

위 예제에서는 Scanner를 통해 사용자로부터 한 줄의 텍스트를 입력받습니다. 그런 다음 정규식 "[a-zA-Z]+"를 컴파일하여 Pattern 객체를 만들고, 이 패턴을 입력 문자열에 적용해 Matcher 객체를 생성합니다.

while 루프 안에서 matcher.find()가 true를 반환하는 동안 반복하며, matcher.group()으로 현재 일치한 단어를 하나씩 출력합니다. find()는 다음 일치 항목이 없으면 false를 반환하므로, 모든 단어가 순서대로 추출됩니다.

참고 사항

이 정규식은 영어 알파벳만 대상으로 하기 때문에 숫자나 특수문자는 무시되며, 한글 등 비영어권 문자도 추출되지 않습니다. 한글 단어까지 함께 추출하려면 "[a-zA-Z가-힣]+"처럼 범위를 확장하면 됩니다. 또한 split() 메서드와 공백 기준 분리 방식도 있지만, 정규식 방식은 문장부호가 섞여 있어도 단어만 깔끔하게 추출할 수 있다는 장점이 있습니다.