정규 표현식은 문자열에서 패턴을 찾고 조작하기 위한 강력한 도구입니다. 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의 Pattern
및 Matcher
클래스를 이용하여 다양한 정규 표현식 작업을 할 수 있습니다.
참고문서: Java Regular Expressions - Oracle Documentation