[JAVA]정규 표현식

2025. 1. 14. 13:05·Language/JAVA

정규 표현식

정규 표현식(Regular Expression, Regex)은 문자열에서 특정 패턴을 찾거나 조작하는 데 사용된다. 정규 표현식의 기본 구성 요소를 이해하면 복잡한 문자열 처리 작업을 보다 쉽게 수행할 수 있다. 아래에서 정규 표현식의 주요 구성 요소를 구체적으로 설명하겠다.

1. 문자 클래스

문자 클래스는 대괄호 []를 사용하여 특정 문자 집합을 정의한다. 문자 클래스 내에 나열된 문자 중 하나와 매칭된다.
[a-z]: 소문자 알파벳 전체 
[A-Z]: 대문자 알파벳 전체
[a-zA-Z]: 소문자와 대문자 알파벳 전체
[0-9]: 숫자 전체 (0부터 9까지)
[abc]: 'a', 'b', 'c' 중 하나와 일치
[^abc]: 'a', 'b', 'c'를 제외한 모든 문자와 매칭

2. 수량자

수량자는 특정 패턴이 문자열 내에서 몇 번 나타나는지를 지정한다. 수량자는 패턴 뒤에 붙여서 사용한다.
*(별): 0회 이상 나타남
예: a*는 빈 문자열, 'a', 'aa', 'aaa' 등과 매칭된다.
+: 1회 이상 나타남
예: a+는 'a', 'aa', 'aaa' 등과 매칭되지만 빈 문자열은 매칭되지 않는다.
?: 0회 또는 1회 나타남
예: a?는 빈 문자열 또는 'a'와 매칭된다.
{n}: 정확히 n회 나타남
예: a{3}는 'aaa'와 매칭된다.
{n,}: n회 이상 나타남
예: a{2,}는 'aa', 'aaa', 'aaaa' 등과 매칭된다.
{n,m}: n회 이상 m회 이하 나타남
예: a{2,4}는 'aa', 'aaa', 'aaaa'와 매칭되지만 'a'나 'aaaaa'는 매칭되지 않는다.

3. 메타 문자

메타 문자는 특별한 의미를 가지는 문자로, 정규 표현식의 동작을 제어한다.
.: 임의의 한 문자와 매칭
예: a.b는 'aab', 'acb', 'a2b' 등과 매칭된다.
^: 문자열의 시작을 나타냄
예: ^abc는 'abc'로 시작하는 문자열과 매칭된다.
$: 문자열의 끝을 나타냄
예: abc$는 'abc'로 끝나는 문자열과 매칭된다.
\: 이스케이프 문자로, 메타 문자를 일반 문자로 취급
예: \.는 마침표 문자 '.'와 매칭된다.

|: "또는"을 의미하며, 여러 패턴 중 하나와 일치하는 경우를 나타낸다.
예: abc|def는 "abc" 또는 "def"와 일치하는 문자열과 매칭된다.

4. 그룹화

그룹화는 소괄호 ()를 사용하여 패턴의 일부를 그룹화한다. 그룹화된 패턴은 전체 패턴의 일부로 취급되며, 수량자와 함께 사용하여 반복할 수 있다.
(abc)+ 이 패턴은 'abc'가 1회 이상 반복되는 문자열과 매칭된다. 예를 들어, 'abc', 'abcabc', 'abcabcabc' 등과 매칭된다.
그룹화는 또한 캡처 그룹을 생성하여 매칭된 부분을 추출하는 데 유용하다. (\d{3})-(\d{2})-(\d{4})는 '123-45-6789'와 같은 형식의 문자열에서 세 부분을 캡처한다.

자바의 정규 표현식

1. Pattern 클래스

Pattern 클래스는 정규 표현식을 컴파일하여 패턴 객체를 생성하는 데 사용된다. 이 클래스는 정규 표현식의 문법을 기반으로 문자열을 검색하는 데 필요한 메서드를 제공한다.

주요 메서드

compile(String regex): 주어진 정규 표현식을 컴파일하여 Pattern 객체를 생성
matcher(CharSequence input): 주어진 입력 문자열에 대해 Matcher 객체를 생성

예제

import java.util.regex.Pattern;
public class PatternExample {
    public static void main(String[] args) {
        String regex = "a*b"; //'a'가 0회 이상 나타나고 'b'로 끝나는 패턴
        Pattern pattern = Pattern.compile(regex); //정규 표현식 컴파일
    }
}

2. Matcher 클래스

Matcher 클래스는 Pattern 객체와 입력 문자열을 사용하여 패턴 매칭을 수행한다. 이 클래스는 문자열 내에서 패턴을 찾고, 매칭된 부분에 대한 정보를 제공하는 다양한 메서드를 포함하고 있습니다.

주요 메서드

find(): 입력 문자열에서 패턴이 발견되면 true를 반환
matches(): 입력 문자열 전체가 패턴과 일치하면 true를 반환
group(): 매칭된 부분 문자열을 반환
start(), end(): 매칭된 부분의 시작 및 끝 인덱스를 반환

예제

import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class MatcherExample {
    public static void main(String[] args) {
        String input = "aaab";
        String regex = "a*b";
        
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(input); //입력 문자열에 대한 Matcher 객체를 생성

        if (matcher.matches()) {
            System.out.println("문자열이 패턴과 일치합니다.");
        } else {
            System.out.println("문자열이 패턴과 일치하지 않습니다.");
        }
    }
}

⭐String 클래스

String 클래스의 matches() 메서드는 문자열이 주어진 정규 표현식과 일치하는지를 간단하게 확인하는 데 사용된다. 이 메서드는 내부적으로 Pattern과 Matcher 클래스를 사용하여 구현되어 있다.

public class StringMatchesExample {
    public static void main(String[] args) {
        if ("aaab".matches("a*b")) {
            System.out.println("문자열이 패턴과 일치합니다.");
        } else {
            System.out.println("문자열이 패턴과 일치하지 않습니다.");
        }
    }
}

'Language > JAVA' 카테고리의 다른 글

[JAVA]String 클래스 메소드  (0) 2025.01.20
[JAVA]입출력 메서드  (0) 2025.01.14
[JAVA]Stack, Queue 컬렉션(Collection)  (2) 2024.12.25
[JAVA]List, Set, Map 컬렉션(Collection)  (2) 2024.11.24
[JAVA]method 종류  (0) 2024.11.20
'Language/JAVA' 카테고리의 다른 글
  • [JAVA]String 클래스 메소드
  • [JAVA]입출력 메서드
  • [JAVA]Stack, Queue 컬렉션(Collection)
  • [JAVA]List, Set, Map 컬렉션(Collection)
yxxjxxeee
yxxjxxeee
  • yxxjxxeee
    공부 일지
    yxxjxxeee
  • 전체
    오늘
    어제
    • study N
      • Framework
        • Spring
      • Language
        • JavaScript
        • C | C++
        • JAVA
        • PHP
      • CS
        • 네트워크
        • 자료구조
        • 데이터베이스
        • 운영체제
      • DBMS
        • MySQL
      • 코딩테스트 N
        • 백준 N
        • 프로그래머스
        • LeetCode
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 쇼핑몰 제작 프로젝트(PHP)
    • github
  • 공지사항

  • 인기 글

  • 최근 글

  • hELLO Designed By 정상우
    Version v4.10.2
yxxjxxeee
[JAVA]정규 표현식
상단으로

티스토리툴바