Anchors make a pattern match the whole string instead of a substring.

anchors `^` anchors the beginning of the string and `$` anchors the end.

Anchored Match

name
anchored_match.lua
Replay: real traced execution (multi-file project)
local name = "item42"
local prefix, digits = string.match(name, "^(%a+)(%d+)$")

print("name=" .. name)
print("prefix=" .. prefix)
print("digits=" .. digits)
local name = "item7"
local prefix, digits = string.match(name, "^(%a+)(%d+)$")

print("name=" .. name)
print("prefix=" .. prefix)
print("digits=" .. digits)
local name = "box5"
local prefix, digits = string.match(name, "^(%a+)(%d+)$")

print("name=" .. name)
print("prefix=" .. prefix)
print("digits=" .. digits)
  1. name ← item42, prefix ← item, digits ← 42

    1local name→ item42 = "item42" --@name="item7", "box5"2local prefix→ item, digits→ 42 = string.match(nameitem42, "^(%a+)(%d+)$")34print("name=" .. nameitem42)5print("prefix=" .. prefixitem)6print("digits=" .. digits42)
    outputname=item42
    prefix=item
    digits=42
  1. name ← item7, prefix ← item, digits ← 7

    1local name→ item7 = "item7"2local prefix→ item, digits→ 7 = string.match(nameitem7, "^(%a+)(%d+)$")34print("name=" .. nameitem7)5print("prefix=" .. prefixitem)6print("digits=" .. digits7)
    outputname=item7
    prefix=item
    digits=7
  1. name ← box5, prefix ← box, digits ← 5

    1local name→ box5 = "box5"2local prefix→ box, digits→ 5 = string.match(namebox5, "^(%a+)(%d+)$")34print("name=" .. namebox5)5print("prefix=" .. prefixbox)6print("digits=" .. digits5)
    outputname=box5
    prefix=box
    digits=5