Parentheses capture matched text so later code can use each part separately.

captures Each capture in a pattern becomes another return value from `string.match`.

Capture Pair

record
capture_pair.lua
Replay: real traced execution (multi-file project)
local record = "name Ada"
local key, value = string.match(record, "(%w+) (%w+)")

print("record=" .. record)
print("key=" .. key)
print("value=" .. value)
local record = "role admin"
local key, value = string.match(record, "(%w+) (%w+)")

print("record=" .. record)
print("key=" .. key)
print("value=" .. value)
local record = "city Oslo"
local key, value = string.match(record, "(%w+) (%w+)")

print("record=" .. record)
print("key=" .. key)
print("value=" .. value)
  1. key ← name, value ← Ada

    1local record = "name Ada" --@record="role admin", "city Oslo"2local key→ name, value→ Ada = string.match(recordname Ada, "(%w+) (%w+)")34print("record=" .. recordname Ada)5print("key=" .. keyname)6print("value=" .. valueAda)
    outputrecord=name Ada
    key=name
    value=Ada
  1. key ← role, value ← admin

    1local record = "role admin"2local key→ role, value→ admin = string.match(recordrole admin, "(%w+) (%w+)")34print("record=" .. recordrole admin)5print("key=" .. keyrole)6print("value=" .. valueadmin)
    outputrecord=role admin
    key=role
    value=admin
  1. key ← city, value ← Oslo

    1local record = "city Oslo"2local key→ city, value→ Oslo = string.match(recordcity Oslo, "(%w+) (%w+)")34print("record=" .. recordcity Oslo)5print("key=" .. keycity)6print("value=" .. valueOslo)
    outputrecord=city Oslo
    key=city
    value=Oslo