Dz
Djazair
v1.0.5
🔍

Regex Module

Import using: use regex

Flags

  • regex.I / regex.IGNORECASE - Case-insensitive matching (value 1).
  • regex.M / regex.MULTILINE - Multiline matching (value 2).
use regex
let pat = regex.compileFlags("hello", regex.I)
print("Case-insensitive pattern created")

Convenience Functions

  • regex.compile(pattern, flags?) - Compile pattern string into Pattern object.
  • regex.fullMatch(pattern, text) - Check if entire string matches pattern.
  • regex.search(pattern, text) - Find first occurrence. Returns Match or Null.
  • regex.findAll(pattern, text) - All non-overlapping matches as array.
  • regex.sub(pattern, replacement, text) - Replace all matches.
  • regex.split(pattern, text) - Split around matches.
use regex
# fullMatch
let fm = regex.fullMatch("^[a-z]+$", "djazair")
print(!isNull(fm))  # True

# search with groups
let text = "Contact: support@djazair.org"
let sr = regex.search("([a-z]+)@([a-z.]+)", text)
if !isNull(sr)
    print(sr.group(0))  # support@djazair.org
    print(sr.group(1))  # support
    print(sr.group(2))  # djazair.org
end

# findAll
let emails = regex.findAll("[a-z]+@[a-z.]+", text)
print(str(emails.length()))  # 1

# sub (replace)
let censored = regex.sub("[a-z]+@[a-z.]+", "[REDACTED]", text)
print(censored)  # Contact: [REDACTED]

# split
let parts = regex.split("\s+", "one two   three  four")
print(str(parts.length()))  # 4

Pattern Class

Compiled regex pattern. Create via regex.compile(pattern, flags?) or regex.compileFlags(pattern, flags).

  • pattern.fullMatch(text) - Full match from start to end. Returns Match or Null.
  • pattern.search(text) - Search for first occurrence. Returns Match or Null.
  • pattern.findAll(text) - All non-overlapping matches. Returns array of strings (no groups) or arrays (with groups).
  • pattern.sub(replacement, text) - Replace all matches (no backreferences).
  • pattern.split(text) - Split around matches (delimiters discarded).
use regex
let pat = regex.compile("(\d{4})-(\d{2})-(\d{2})")

# fullMatch
let pfm = pat.fullMatch("2025-06-15")
print(!isNull(pfm))  # True

# search
let ps = pat.search("Today is 2025-06-15")
if !isNull(ps)
    print(ps.group(0))  # 2025-06-15
end

# findAll
let pfa = pat.findAll("2025-01-01, 2025-06-15")
print(str(pfa.length()))  # 2

# sub
let replaced = pat.sub("DATE", "Born: 1990-04-20")
print(replaced)  # Born: DATE

# split
let pDigits = regex.compile("\d")
let pSplit = pDigits.split("a1b2c3")
print(str(pSplit.length()))  # 4

Match Class

  • match.group(n?) - Substring matched by group n (0=entire match). Null if undefined.
  • match.groups() - All captured groups (excluding full match).
  • match.start(n?) - Start position of group n (-1 if undefined).
  • match.endPos(n?) - End position of group n (-1 if undefined).
  • match.span(n?) - [start, end] span of group n.
  • match.pos() - Start position of entire match (shortcut).
use regex
let m = regex.search("(\d{4})-(\d{2})-(\d{2})", "Date: 2025-06-15")
if !isNull(m)
    print(m.group(0))  # 2025-06-15
    print(m.group(1))  # 2025
    print(m.group(2))  # 06
    print(m.group(3))  # 15
    # groups() returns captured groups as array
    let gs = m.groups()
    print(str(gs[0]))  # 2025
    # Position info
    print(str(m.start(0)))  # 6
    print(str(m.endPos(0))) # 16
    let sp = m.span(0)
    print(str(sp[0]) + " " + str(sp[1]))  # 6 16
end
© 2026 Harizi Riyadh. Released under the MIT License.
Official Website for Djazair.