정규 표현식

개굴이·2023년 9월 5일
0

Java

목록 보기
6/7
post-thumbnail

정규 표현식(Regular Expression)

정규 표현식(Regular Expression 또는 Regex)은 문자열을 검색, 매칭, 추출하거나 특정 패턴의 문자열을 생성하는 데 사용되는 강력한 도구이다.

주요 표현 방법

  • 리터럴 문자 : 일반 문자는 해당 문자와 정확히 일치
    ex) "abc"는 문자열 "abc"와 정확하게 일치하는 패턴.

  • 메타 문자 : 특수한 의미를 가지는 문자로 역슬래시()로 시작
    . : 어떤 문자 하나와 일치.
    => "."를 표현하고 싶다면 "\."으로 표현
    * : 바로 앞 문자나 그룹이 0회 이상 반복.
    + : 바로 앞 문자나 그룹이 1회 이상 반복.
    ? : 바로 앞 문자나 그룹이 0회 또는 1회 반복.
    [] : 문자 클래스로, 대괄호 안의 문자 중 하나와 일치.
    [^] : 해당 문자를 제외한 다른 문자와 일치.
    {} : 반복 수량자로, 패턴 또는 그룹의 반복 횟수를 지정.

  • 문자 클래스 : 대괄호([ ]) 안의 문자 집합
    [abc] : "a", "b", "c" 중 하나의 문자와 일치.
    [0-9] : 0부터 9까지의 숫자 중 하나와 일치.

  • 반복 수량자 : 패턴, 그룹 또는 문자 클래스를 반복
    * : 0회 이상 반복.
    + : 1회 이상 반복.
    ? : 0회 또는 1회 반복.
    {n} : 정확히 n회 반복.
    {n,} : n회 이상 반복.
    {n,m} : n회부터 m회까지 반복.

  • 그룹화 : 괄호 '()'를 사용하여 일련의 문자열을 그룹화
    '('와 ')' : 그룹을 나타내며, 그룹 전체를 하나의 요소로 취급.

  • 앵커 : 특정 위치를 나타내며, 문자열의 시작과 끝을 나타내는 앵커가 있다.
    ^ : 문자열의 시작 위치.
    $ : 문자열의 끝 위치.

  • 특수 시퀀스 : 특수한 의미를 가지는 문자열 패턴
    \b : 단어 경계(Word Boundary)
    \d : 숫자와 일치.
    \D : 숫자가 아닌 문자와 일치.
    \w : 알파벳 문자와 숫자, 밑줄('_')과 일치.
    \W : 알파벳 문자, 숫자, 밑줄('_')이 아닌 문자와 일치.
    \s : 공백 문자와 일치.
    \S : 공백 문자가 아닌 문자와 일치.

ex) \bword\b는
"word" 라는 단어 자체
"word"로 끝나는 문장 또는 문자열의 "word" 부분
"word"로 시작하는 문장 또는 문자열의 "word" 부분.
하지만, "sword"나 "wordpress"와 같이 "word" 문자열 내에 다른 문자가 붙어 있는 경우에는 \bword\b와 일치하지 않는다.

  • OR 연산자 : '|'를 사용하여 여러 패턴 중 하나와 일치하는 것을 표현
    ex) cat|dog는 "cat" 또는 "dog"와 일치.
  • 백슬래시 이스케이프 : 메타 문자를 일반 문자로 처리하려면 백슬래시(\)를 사용
    ex) \.는 실제 점(.)과 일치.
  • (?i) : 정규 표현식에서 대소문자를 무시하는 플래그
    ex) (?i)hello
    위 표현식은 "hello"라는 문자열과 대소문자를 구분하지 않고 매칭된다. 즉, "hello", "Hello", "HELLO", "hElLo" 등과 일치

사용 예)

  • 이메일 주소 검색

패턴 : [a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,}
설명 : 이메일 주소의 일반적인 형식을 검색하는 패턴.

  • URL 추출

패턴 : https?://\S+
설명 : 문자열에서 HTTP 또는 HTTPS URL을 추출하는 패턴.

  • 전화번호 추출

패턴 : \d{3}-\d{3}-\d{4}
설명 : XXX-XXX-XXXX 형식의 전화번호를 추출하는 패턴.

  • 날짜 형식 검색:

패턴 : \d{4}-\d{2}-\d{2}
설명 : YYYY-MM-DD 형식의 날짜를 검색하는 패턴.

  • IP 주소 검색:

패턴 : \b\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}\b
설명 : IPv4 주소를 검색하는 패턴.

ex)

//javascript 예
var ary = str.split(/\D+/g)
//java 예
String input = "123abc456def789";
String regex = "\\D+"; // 숫자가 아닌 문자들을 찾는 정규 표현식

Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);

while (matcher.find()) {
    System.out.println(matcher.group());
}

이미지


출처 openAI

0개의 댓글