← SPL reference

regex (lib/regex.spl)

Regular expression helpers implemented in pure SPL (backtracking matcher). Supports a practical subset: ., [classes] and negated [^classes], (groups), named groups (?<name>…), non-capturing (?:…), alternation |, \d \s \w, backreferences \1\9, anchors ^ $, quantifiers * + ? and non-greedy *? +? ??, lookahead/lookbehind (?=…) (?!…) (?<=…) (?<!…), and literal characters.

Load extensionless (reqFileExtension = False): use regex;.

API summary

Pattern tips

Example

use regex;

test.assertTrue(regex.match("^\\d{3}-\\d{4}$", "555-0199"));

idx.setVar(regex.search("@", "user@host"));
test.assertEqualNumber(idx, 4);

nums.setVar(regex.findAll("[0-9]+", "a12b3"));
test.assertEqual(list.get(0, nums), "12");

clean.setVar(regex.replace("\\s+", " ", "  hello   world  "));
test.assertEqual(clean, " hello world ");

parts.setVar(regex.split(",", "one,two,three"));
test.assertEqual(list.get(2, parts), "three");

test.assertTrue(regex.match("^[^0-9]+$", "abc"));
pet.setVar(regex.search("cat|dog", "my dog"));
test.assertEqualNumber(pet, 3);
test.assertTrue(regex.match("^(ab)+$", "abab"));
test.assertEqual(regex.replace("(ab|cd)", "X", "abcd"), "XX");
test.assertTrue(regex.match("^(a)\\1$", "aa"));
test.assertTrue(regex.match("^<.+?>$", ""));
regex.search("(?\\w+)", "hello");
test.assertEqual(regex.groupNamed("word"), "hello");
test.assertEqual(regex.replace("(a)", "X\\1X", "a"), "XaX");

Implementation reference: someProgrammingLanguage/lib/regex.spl.