Menu
Coddy logo textTech

string.gmatch()를 이용한 반복 처리

Coddy Lua 여정의 Logic & Flow 섹션에 포함된 레슨 — 54개 중 39번째.

string.match()가 패턴의 첫 번째 일치 항목을 찾는 반면, 문자열 내의 모든 일치 항목을 찾아야 한다면 어떻게 해야 할까요? string.gmatch() 함수는 각 일치 항목을 하나씩 처리하기 위해 for 루프에서 사용할 수 있는 반복자(iterator)를 반환함으로써 이 문제를 해결합니다.

기본 구문은 다음과 같습니다:

for match in string.gmatch(text, pattern) do
    -- 각 일치 항목을 처리합니다
end

문자열에서 모든 숫자를 찾는 예제입니다:

local text = "I have 3 apples and 5 oranges"
for number in string.gmatch(text, "%d+") do
    print(number)
end
-- 출력:
-- 3
-- 5

패턴 %d+는 하나 이상의 숫자에 매칭되며, 찾은 각 숫자마다 루프가 한 번씩 실행됩니다.

문장에서 모든 단어를 추출할 수도 있습니다:

local sentence = "Lua is a powerful language"
for word in string.gmatch(sentence, "%a+") do
    print(word)
end
-- Output:
-- Lua
-- is
-- a
-- powerful
-- language
challenge icon

챌린지

쉬움

text를 인자로 받아 텍스트에서 발견된 모든 해시태그를 각각 별도의 줄에 반환하는 extractHashtags 함수를 작성하세요.

텍스트에서 모든 해시태그를 찾기 위해 string.gmatch()를 사용하세요. 해시태그는 #로 시작하고 하나 이상의 문자가 뒤따릅니다.

로직:

  • 모든 해시태그를 찾기 위해 "#%a+" 패턴과 함께 string.gmatch()를 사용합니다.
  • 각 일치 항목을 반복하여 수집합니다.
  • 모든 해시태그를 줄바꿈 문자(\n)로 연결합니다.
  • 해시태그가 발견되지 않으면 빈 문자열을 반환합니다.

매개변수:

  • text (string): 해시태그를 검색할 텍스트

반환값: 발견된 모든 해시태그를 각각 별도의 줄에 반환합니다. 해시태그가 존재하지 않으면 빈 문자열을 반환합니다. (string)

치트 시트

string.gmatch() 함수는 문자열에서 패턴의 모든 발생을 찾는 반복자(iterator)를 반환하여, for 루프에서 각 일치 항목을 처리할 수 있게 해줍니다.

기본 구문:

for match in string.gmatch(text, pattern) do
    -- 각 일치 항목 처리
end

모든 숫자를 찾는 예제:

local text = "I have 3 apples and 5 oranges"
for number in string.gmatch(text, "%d+") do
    print(number)
end
-- 출력:
-- 3
-- 5

모든 단어를 추출하는 예제:

local sentence = "Lua is a powerful language"
for word in string.gmatch(sentence, "%a+") do
    print(word)
end
-- 출력:
-- Lua
-- is
-- a
-- powerful
-- language

직접 해보기

function extractHashtags(text)
    -- 여기에 코드를 작성하세요
end
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

Logic & Flow의 모든 레슨