학습
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"
6. 정리
string.match, string.gmatch, string.gsub를 사용하여 패턴을 처리합니다.다음에 배우면 좋은 주제는 정규 표현식입니다. 정규 표현식을 배우면 패턴 매칭의 강력한 기능을 더욱 활용할 수 있습니다.