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