IMCAT.DEV
로그인 가입
Lua 입문 자료구조

Lua 패턴 매칭

Lua 패턴 매칭 — 초급

패턴 매칭

1. 도입 (왜 배워야 하는가)

패턴 매칭은 문자열 처리 및 데이터 검증에서 매우 중요한 기능입니다. 예를 들어, 사용자 입력을 검증하거나, 로그 파일에서 특정 정보를 추출해야 하는 경우, 패턴 매칭을 사용하여 원하는 데이터를 신속하게 찾아낼 수 있습니다. 이를 통해 코드의 효율성을 높이고, 오류를 줄일 수 있습니다.

패턴 매칭을 모르고 문자열 처리를 하게 되면, 복잡한 문자열 조작을 수작업으로 해야 하며, 이는 코드의 가독성을 떨어뜨리고 유지보수를 어렵게 만듭니다. 예를 들어, 이메일 주소나 전화번호의 형식을 체크할 때 패턴 매칭이 없으면 수동으로 문자열을 비교해야 하며, 이는 시간과 노력이 많이 드는 비효율적인 방법입니다.

2. 핵심 개념 설명

패턴 매칭은 문자열에서 특정 패턴을 찾는 기술입니다. Lua에서는 string.match, string.gmatch, string.gsub 등의 함수를 사용하여 패턴을 처리합니다.

  • 패턴: 문자열에서 일치하는 특정 형식. 예를 들어, 이메일 주소의 패턴은 "%w+@%w+%.%w+"와 같습니다.
  • 정규 표현식: 패턴 매칭에서 사용되는 강력한 도구로, 복잡한 문자열 규칙을 정의할 수 있습니다.
  • 용어설명
    패턴문자열에서 찾아낼 특정 형식
    정규 표현식패턴을 정의하기 위해 사용하는 표현식
    메타문자패턴 내에서 특별한 의미를 갖는 문자들

    3. 기본 코드 예제

    가장 간단한 패턴 매칭 사용법을 살펴보겠습니다.

    local str = "Hello, world!"
    local pattern = "Hello"
    
    if string.match(str, pattern) then
        print("패턴이 일치합니다.")
    else
        print("패턴이 일치하지 않습니다.")
    end
  • 실행 결과: 패턴이 일치합니다.
  • 동작 설명:
  • 1. str 변수에 문자열 "Hello, world!"를 저장합니다. 2. pattern 변수에 찾고자 하는 패턴 "Hello"를 저장합니다. 3. string.match 함수를 사용하여 str에서 pattern이 존재하는지 확인합니다. 4. 패턴이 일치하면 "패턴이 일치합니다."를 출력합니다.

    4. 실전 활용 예제

    1. 이메일 주소 검증

    쇼핑몰 회원가입 시 이메일 주소를 검증할 때 패턴 매칭을 사용할 수 있습니다.

    local email = "[email protected]"
    local pattern = "%w+@%w+%.%w+"
    
    if string.match(email, pattern) then
        print("유효한 이메일입니다.")
    else
        print("유효하지 않은 이메일입니다.")
    end
  • 이 코드는 입력된 이메일 주소가 패턴에 맞는지 확인하여 유효성을 검증합니다.
  • 2. 전화번호 형식 검사

    전화번호 형식을 체크할 때도 유용합니다.

    local phone = "010-1234-5678"
    local pattern = "%d%d%d%-%d%d%d%d%-%d%d%d%d"
    
    if string.match(phone, pattern) then
        print("유효한 전화번호입니다.")
    else
        print("유효하지 않은 전화번호입니다.")
    end
  • 이 코드는 전화번호가 지정된 형식에 맞는지 검증합니다.
  • 5. 흔한 실수와 주의사항

    실수 1: 메타문자 사용 시 이스케이프 처리

  • 잘못된 코드:
  • local pattern = "1+2"
  • 올바른 코드:
  • local pattern = "1%+2"
  • 메타문자 +를 문자로 사용하고 싶다면 %를 붙여야 합니다.
  • 실수 2: 대소문자 구분

  • 잘못된 코드:
  • local pattern = "hello"
  • 올바른 코드:
  • local pattern = "Hello"
  • Lua의 패턴 매칭은 대소문자를 구분하므로, 정확한 패턴을 사용해야 합니다.
  • 6. 정리

  • 패턴 매칭은 문자열 처리와 데이터 검증에서 매우 중요합니다.
  • Lua에서는 string.match, string.gmatch, string.gsub를 사용하여 패턴을 처리합니다.
  • 메타문자 사용 시 이스케이프 처리와 대소문자 구분에 유의해야 합니다.

다음에 배우면 좋은 주제는 정규 표현식입니다. 정규 표현식을 배우면 패턴 매칭의 강력한 기능을 더욱 활용할 수 있습니다.