본문 바로가기

old/Programming

정규식이란

반응형

정의

정규표현식(정규식 = Regular Expression)은 문자열의 패턴을 표현하는데 사용되는 특수한 문자열입니다. 특정한 패턴을 가진 문자열을 사용함으로서 이에 맞는 조건을 가진 문자열을 선택할수 있습니다.

목적

정규식은 주어진 문자열에서 특정한 패턴을 찾거나, 대체하거나, 추출하는 등의 작업을 수행하는데 사용됩니다.

정규식 문법의 기초적인 예제

숫자 패턴 매칭: 숫자로만 이루어진 문자열을 찾는 정규식입니다.

        // 1. 숫자 패턴 매칭: 숫자로만 이루어진 문자열을 찾는 정규식
        String pattern1 = "\\\\d+";

        // 2. 알파벳 소문자 패턴 매칭: 알파벳 소문자로만 이루어진 문자열을 찾는 정규식
        String pattern2 = "[a-z]+";

        // 3. 알파벳 대문자 패턴 매칭: 알파벳 대문자로만 이루어진 문자열을 찾는 정규식
        String pattern3 = "[A-Z]+";

        // 4. 알파벳 소문자 또는 대문자 패턴 매칭: 알파벳 소문자 또는 대문자로만 이루어진 문자열을 찾는 정규식
        String pattern4 = "[a-zA-Z]+";

        // 5. 알파벳 소문자로 시작하는 단어 패턴 매칭: 알파벳 소문자로 시작하고, 그 뒤에 알파벳 소문자, 대문자, 또는 숫자가 여러 개 있는 단어를 찾는 정규식
        String pattern5 = "[a-z][a-zA-Z0-9]*";

        // 6. 이메일 주소 유효성 검사 패턴: 이메일 주소의 유효성을 검사하는 정규식
        String pattern6 = "^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\\\.[A-Za-z]{2,}$";

장점

  • 강력한 문자열 검색 기능을 제공하여 복잡한 패턴을 효과적으로 처리할 수 있습니다.
  • 다양한 프로그래밍 언어와 텍스트 편집기에서 지원되며, 범용적으로 사용됩니다.

단점

  • 복잡한 정규식은 이해하기 어려울 수 있습니다.
  • 정규식의 성능은 패턴의 복잡성에 따라 달라질 수 있습니다.

사용법 step-by-step

  1. 원하는 패턴을 정의합니다. 이 패턴은 문자열의 특정한 부분을 나타냅니다.
  2. 정규식을 사용할 프로그래밍 언어나 텍스트 편집기에서 정규식을 생성합니다.
  3. 생성한 정규식을 대상 문자열에 적용하여 원하는 작업을 수행합니다. 이 작업에는 패턴 매칭, 검색, 치환, 유효성 검사 등이 포함될 수 있습니다.

예제

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

public class Main {
    public static void main(String[] args) {
        String input = "Hello123 World456";

        // 1. 숫자 패턴 매칭: 숫자로만 이루어진 문자열을 찾는 정규식
        String pattern1 = "\\\\d+";

        // 2. 알파벳 소문자 패턴 매칭: 알파벳 소문자로만 이루어진 문자열을 찾는 정규식
        String pattern2 = "[a-z]+";

        // 3. 알파벳 대문자 패턴 매칭: 알파벳 대문자로만 이루어진 문자열을 찾는 정규식
        String pattern3 = "[A-Z]+";

        // 4. 알파벳 소문자 또는 대문자 패턴 매칭: 알파벳 소문자 또는 대문자로만 이루어진 문자열을 찾는 정규식
        String pattern4 = "[a-zA-Z]+";

        // 5. 알파벳 소문자로 시작하는 단어 패턴 매칭: 알파벳 소문자로 시작하고, 그 뒤에 알파벳 소문자, 대문자, 또는 숫자가 여러 개 있는 단어를 찾는 정규식
        String pattern5 = "[a-z][a-zA-Z0-9]*";

        // 6. 이메일 주소 유효성 검사 패턴: 이메일 주소의 유효성을 검사하는 정규식
        String pattern6 = "^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\\\.[A-Za-z]{2,}$";

        Pattern regex;
        Matcher matcher;

        // 1. 숫자 패턴 매칭 예제
        regex = Pattern.compile(pattern1);
        matcher = regex.matcher(input);
        while (matcher.find()) {
            String match = matcher.group();
            System.out.println("Match (Numbers): " + match);
        }

        // 2. 알파벳 소문자 패턴 매칭 예제
        regex = Pattern.compile(pattern2);
        matcher = regex.matcher(input);
        while (matcher.find()) {
            String match = matcher.group();
            System.out.println("Match (Lowercase Letters): " + match);
        }

        // 3. 알파벳 대문자 패턴 매칭 예제
        regex = Pattern.compile(pattern3);
        matcher = regex.matcher(input);
        while (matcher.find()) {
            String match = matcher.group();
            System.out.println("Match (Uppercase Letters): " + match);
        }

        // 4. 알파벳 소문자 또는 대문자 패턴 매칭 예제
        regex = Pattern.compile(pattern4);
        matcher = regex.matcher(input);
        while (matcher.find()) {
            String match = matcher.group();
            System.out.println("Match (Letters): " + match);
        }

        // 5. 알파벳 소문자로 시작하는 단어 패턴 매칭 예제
        regex = Pattern.compile(pattern5);
        matcher = regex.matcher(input);
        while (matcher.find()) {
            String match = matcher.group();
            System.out.println("Match (Word Starting with Lowercase Letter): " + match);
        }

        // 6. 이메일 주소 유효성 검사 패턴 예제
        regex = Pattern.compile(pattern6);
        matcher = regex.matcher("test@example.com");
        boolean isValidEmail = matcher.matches();
        System.out.println("Is Valid Email: " + isValidEmail);

    }
}
반응형