(ns Regex "Elixir Regex module — regular expression operations (wraps Erlang :re). In CljElixir: (Regex/match? ~r/pattern/ string), etc. Regex literals use ~r/pattern/flags syntax.") (defn compile "Compiles a regex pattern string. Returns {:ok regex} or {:error reason}. (Regex/compile \"^hello\") ;=> {:ok ~r/^hello/} (Regex/compile \"hello\" \"i\") ;=> case-insensitive" ([source]) ([source opts])) (defn compile! "Compiles a regex. Raises on invalid pattern. (Regex/compile! \"^hello\") ;=> ~r/^hello/" ([source]) ([source opts])) (defn match? "Returns true if `string` matches `regex`. (Regex/match? ~r/\\d+/ \"hello123\") ;=> true" [regex string]) (defn run "Runs the regex against `string`. Returns list of matches or nil. (Regex/run ~r/(\\w+)@(\\w+)/ \"user@host\") ;=> [\"user@host\" \"user\" \"host\"] (Regex/run ~r/\\d+/ \"hello\") ;=> nil" ([regex string]) ([regex string opts])) (defn scan "Scans the string for all matches. (Regex/scan ~r/\\d+/ \"a1b2c3\") ;=> [[\"1\"] [\"2\"] [\"3\"]]" ([regex string]) ([regex string opts])) (defn named-captures "Returns a map of named captures. (Regex/named-captures ~r/(?P\\d{4})-(?P\\d{2})/ \"2024-03\") ;=> %{\"year\" => \"2024\", \"month\" => \"03\"}" ([regex string]) ([regex string opts])) (defn replace "Replaces regex matches in `string` with `replacement`. (Regex/replace ~r/\\d+/ \"a1b2\" \"X\") ;=> \"aXbX\" (Regex/replace ~r/(\\w+)/ \"hello\" (fn [match] (String/upcase match)))" ([regex string replacement]) ([regex string replacement opts])) (defn split "Splits `string` by `regex`. (Regex/split ~r/\\s+/ \"hello world\") ;=> [\"hello\" \"world\"] (Regex/split ~r/,/ \"a,b,c\" :parts 2) ;=> [\"a\" \"b,c\"]" ([regex string]) ([regex string opts])) (defn source "Returns the source string of a compiled regex. (Regex/source ~r/hello/) ;=> \"hello\"" [regex]) (defn opts "Returns the options string of a compiled regex. (Regex/opts ~r/hello/i) ;=> \"i\"" [regex]) (defn re-pattern "Returns the underlying compiled pattern." [regex]) (defn names "Returns a list of named capture group names. (Regex/names ~r/(?P\\w+)/) ;=> [\"name\"]" [regex]) (defn escape "Escapes a string for use in a regex. (Regex/escape \"hello.world\") ;=> \"hello\\\\.world\"" [string]) (defn regex? "Returns true if `term` is a compiled regex." [term])