string.match()

The string.match() function in Lua searches for a specified pattern in a string and returns the first occurrence of the match. If no match is found, it returns nil. This function is particularly useful for extracting substrings or validating input formats.

Syntax

string.match(s, pattern, init)

Parameters

  • Name
    s
    Type
    string
    Description

    The string to be searched for the specified pattern.

  • Name
    pattern
    Type
    string
    Description

    The pattern to search for in the string. Lua's pattern matching syntax is used.

  • Name
    init
    Type
    number
    Description

    The starting position in the string from which to begin searching. Defaults to 1 if not provided.

Return Value

Returns the first match found as a string. If no match is found, it returns nil.

Pattern Table

Here are some commonly used patterns in Lua's pattern matching:

PatternDescription
.Matches any character (except a newline).
%aMatches any letter (alphabetical character).
%cMatches any control character.
%dMatches any digit (0-9).
%lMatches any lowercase letter (a-z).
%uMatches any uppercase letter (A-Z).
%sMatches any space character (including spaces, tabs, etc.).
%pMatches any punctuation character.
%wMatches any alphanumeric character (letters and digits).
%xMatches any hexadecimal digit (0-9 and a-f).
*Matches 0 or more occurrences of the preceding element.
+Matches 1 or more occurrences of the preceding element.
-Matches 0 or more occurrences, but as few as possible (non-greedy).
?Matches 0 or 1 occurrence of the preceding element.
^Matches the start of a string.
$Matches the end of a string.
[...]Matches any single character in the brackets.
%< and %>Matches the < and > characters.
%-Matches the - character.
%%Matches the % character (escape sequence).

Examples

Example 1: Basic Pattern Matching

Search for a simple substring within a string.

Example 1

local text = "Hello, Lua!"

local match = string.match(text, "Lua")

print(match)  -- Output: Lua

Example 2: Using Patterns

Search for patterns using Lua's pattern syntax.

Example 2

local text = "The year is 2025."

local match = string.match(text, "%d%d%d%d")  -- Matches a four-digit number

print(match)  -- Output: 2025

Example 3: Starting from a Specific Position

Start searching from a specific position in the string.

Example 3

local text = "Look at the stars, Look how they shine."

local match = string.match(text, "Look", 10)  -- Start searching after the 9th character

print(match)  -- Output: Look

Example 4: No Match Found

Return nil if no match is found.

Example 4

local text = "Hello, Lua!"

local match = string.match(text, "Python")

print(match)  -- Output: nil

Use Cases

  • Input Validation: Check if a string meets specific format requirements.
  • Data Extraction: Extract specific information from strings, such as dates or identifiers.
  • Pattern Recognition: Identify the presence of specific patterns in user input or text files.

See also

  • string.gmatch(): Iterates over all occurrences of a pattern in a string, allowing for more comprehensive pattern searches.
  • string.gsub(): Replaces occurrences of a pattern in a string, which can be useful after identifying matches with string.match().

Was this page helpful?

Table of Contents