[java] 정규 표현식

정규 표현식은 문자열에서 패턴을 찾고 조작하기 위한 강력한 도구입니다. Java에서는 java.util.regex 패키지를 통해 정규 표현식을 사용할 수 있습니다. 이번 포스트에서는 Java에서 정규 표현식을 작성하고 사용하는 방법에 대해 알아보겠습니다.

정규 표현식 패턴 생성

Java에서 정규 표현식을 작성하기 위해서는 Pattern 클래스를 사용해 패턴을 생성해야 합니다. 패턴은 Pattern.compile() 메서드를 사용하여 생성할 수 있으며, 문자열 형태로 작성된 정규식을 전달해야 합니다.

String regex = "a*b";
Pattern pattern = Pattern.compile(regex);

위 예제에서는 “a*b”라는 정규식을 사용하여 패턴을 생성했습니다. 이 정규식은 “a” 다음에 “b”가 0회 이상 반복되는 패턴을 의미합니다.

정규 표현식 검색

생성한 패턴을 사용하여 문자열에서 특정 패턴을 검색할 수 있습니다. Matcher 클래스의 matches(), find(), replaceAll(), split() 등의 메서드를 사용하여 검색 및 조작을 수행할 수 있습니다.

String input = "aaab";
Matcher matcher = pattern.matcher(input);

boolean matches = matcher.matches(); // 정확히 일치하는지 검사
boolean find = matcher.find(); // 일치하는 부분을 찾는지 검사
String replaced = matcher.replaceAll("c"); // 일치하는 부분을 대체
String[] split = pattern.split(input); // 일치하는 부분을 기준으로 문자열 나누기

위 예제에서는 “aaab”라는 문자열에서 생성한 패턴에 대해 일치 여부를 검사하고, 일치하는 부분을 찾거나 대체하며, 문자열을 나누는 방법을 보여주고 있습니다.

정규 표현식 그룹

정규 표현식에서 괄호로 묶은 부분은 그룹으로 취급됩니다. 그룹은 group(), group(int) 메서드를 사용하여 추출할 수 있습니다.

String input = "abc123";
String regex = "(\\D+)(\\d+)";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);

if (matcher.find()) {
    String wholeMatch = matcher.group(); // 전체 매치된 문자열 전달
    String group1 = matcher.group(1); // 첫 번째 그룹 전달
    String group2 = matcher.group(2); // 두 번째 그룹 전달
}

위 예제에서는 “abc123”이라는 문자열에서 정규식 “(\D+)(\d+)” 패턴에 매칭되는 부분을 그룹으로 추출하는 방법을 보여주고 있습니다.

마치며

Java에서 정규 표현식을 사용하는 방법에 대해 간단히 알아보았습니다. 정규 표현식은 패턴을 활용하여 문자열을 검색하고 조작하는 데 매우 유용합니다. Java의 PatternMatcher 클래스를 이용하여 다양한 정규 표현식 작업을 할 수 있습니다.

참고문서: Java Regular Expressions - Oracle Documentation