문자열 패턴 입문
Coddy Lua 여정의 Logic & Flow 섹션에 포함된 레슨 — 54개 중 36번째.
이전 레슨에서 string.gsub()를 사용했을 때, 공백이나 특정 단어와 같이 정확한 텍스트를 검색했습니다. 하지만 정확한 문자를 모르는 상태에서 "모든 숫자"나 "모든 글자"를 찾아야 한다면 어떻게 해야 할까요? 이럴 때 문자열 패턴(string patterns)이 필요합니다.
Lua의 문자열 패턴은 정확한 텍스트 자체보다는 찾고자 하는 텍스트의 종류를 설명하는 방법입니다. 정규 표현식보다 간단하지만 대부분의 텍스트 처리 작업에 충분히 강력합니다.
Lua는 문자 범주와 일치하는 문자 클래스라고 불리는 특수 코드를 제공합니다. 가장 일반적인 것들은 다음과 같습니다:
%d -- 모든 숫자(0-9)와 일치
%a -- 모든 문자(a-z, A-Z)와 일치
%s -- 모든 공백 문자(공백, 탭, 줄바꿈)와 일치
%w -- 모든 영숫자(문자와 숫자)와 일치
%p -- 모든 문장 부호와 일치다음은 string.find()와 함께 이러한 패턴을 사용하여 문자열에서 첫 번째 숫자를 찾는 방법입니다:
local text = "Room 42 is available"
local position = string.find(text, "%d")
print(position) -- 출력: 6이 클래스들의 대문자 버전을 사용하여 반대되는 경우를 매칭할 수도 있습니다. 예를 들어, %D는 숫자가 아닌 모든 문자와 매칭되며, %A는 글자가 아닌 모든 문자와 매칭됩니다.
챌린지
쉬움text를 인자로 받아 해당 텍스트에 숫자가 하나 이상 포함되어 있는지 여부를 반환하는 containsDigit 함수를 작성하세요.
string.find()와 %d 문자 클래스를 사용하여 문자열에 숫자가 존재하는지 확인하세요.
매개변수:
text(string): 숫자가 있는지 확인할 텍스트
반환값: 텍스트에 숫자가 하나 이상 포함되어 있으면 true, 그렇지 않으면 false (boolean)
치트 시트
Lua의 문자열 패턴은 찾고자 하는 정확한 텍스트가 아니라, 어떤 종류의 텍스트를 찾고 있는지를 설명합니다.
Lua는 특정 범주의 문자와 일치하는 문자 클래스(character classes)라고 불리는 특수 코드를 제공합니다:
%d -- 모든 숫자와 일치 (0-9)
%a -- 모든 글자와 일치 (a-z, A-Z)
%s -- 모든 공백 문자와 일치 (공백, 탭, 줄바꿈)
%w -- 모든 영숫자 문자와 일치 (글자 및 숫자)
%p -- 모든 문장 부호 문자와 일치반대되는 경우를 찾으려면 대문자 버전을 사용할 수 있습니다. 예를 들어, %D는 숫자가 아닌 모든 문자와 일치하며, %A는 글자가 아닌 모든 문자와 일치합니다.
string.find()와 함께 문자 클래스 사용하기:
local text = "Room 42 is available"
local position = string.find(text, "%d")
print(position) -- Output: 6직접 해보기
function containsDigit(text)
-- 여기에 코드를 작성하세요
end
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.