Checks whether a string matches a regex.
"https://val.packett.cool" =~ [re|^http.*|]True
:: a typeCtrl KGHC 9.10.3 · lts/ghc-9.10.x · c74966e · 2026-09-27
Modulepcre-heavy-1.0.0.3Haskell2010
A usable regular expressions library on top of pcre-light.
Checks whether a string matches a regex.
"https://val.packett.cool" =~ [re|^http.*|]True
Checks whether a string matches a regex.
"https://val.packett.cool" =~ [re|^http.*|]True
Same as =~.
Searches the string for all matches of a given regex.
scan [re|\s*entry (\d+) (\w+)\s*&?|] (" entry 1 hello &entry 2 hi" :: String)[(" entry 1 hello &",["1","hello"]),("entry 2 hi",["2","hi"])]
It is lazy! If you only need the first match, just apply head (or
headMay from the "safe" library) -- no extra work will be performed!
head $ scan [re|\s*entry (\d+) (\w+)\s*&?|] (" entry 1 hello &entry 2 hi" :: String)(" entry 1 hello &",["1","hello"])
Exactly like scan, but passes runtime options to PCRE.
Exactly like scanRanges, but passes runtime options to PCRE.
Class of types that can serve as the replacement argument in the sub family of functions.
ConvertibleStrings a SBS => RegexReplacement aDefined in pcre-heavy-1.0.0.3 · Text.Regex.PCRE.HeavyA replacement string.
(ConvertibleStrings SBS a, ConvertibleStrings a SBS) => RegexReplacement ([a] -> a)Defined in pcre-heavy-1.0.0.3 · Text.Regex.PCRE.HeavyA function mapping the matched groups to a replacement string.
(ConvertibleStrings SBS a, ConvertibleStrings a SBS) => RegexReplacement (a -> [a] -> a)Defined in pcre-heavy-1.0.0.3 · Text.Regex.PCRE.HeavyA function mapping the matched string and groups to a replacement string.
(ConvertibleStrings SBS a, ConvertibleStrings a SBS) => RegexReplacement (a -> a)Defined in pcre-heavy-1.0.0.3 · Text.Regex.PCRE.HeavyA function mapping the matched string to a replacement string.
Replaces the first occurence of a given regex.
sub [re|thing|] "world" "Hello, thing thing" :: String"Hello, world thing"
sub [re|a|] "b" "c" :: String"c"
sub [re|bad|] "xxxbad" "this is bad, right?" :: String"this is xxxbad, right?"
You can use functions! A function of ConvertibleStrings SBS gets the full match. A function of [ConvertibleStrings SBS] gets the groups. A function of ConvertibleStrings SBS → [ConvertibleStrings SBS] gets both.
sub [re|%(\d+)(\w+)|] (\(d:w:_) -> "{" ++ d ++ " of " ++ w ++ "}" :: String) "Hello, %20thing" :: String"Hello, {20 of thing}"
Exactly like sub, but passes runtime options to PCRE.
Replaces all occurences of a given regex.
See sub for more documentation.
gsub [re|thing|] "world" "Hello, thing thing" :: String"Hello, world world"
gsub [re||] "" "Hello, world" :: String"Hello, world"
https://codeberg.org/valpackett/pcre-heavy/issues/2 >>> gsub [re|good|] "bad" "goodgoodgood" :: String "badbadbad"
gsub [re|bad|] "xxxbad" "this is bad, right? bad" :: String"this is xxxbad, right? xxxbad"
gsub [re|a|] "" "aaa" :: String""
Exactly like gsub, but passes runtime options to PCRE.
Splits the string using the given regex.
Is lazy.
split [re|%(begin|next|end)%|] ("%begin%hello%next%world%end%" :: String)["","hello","world",""]
split [re|%(begin|next|end)%|] ("" :: String)[""]
Exactly like split, but passes runtime options to PCRE.
A QuasiQuoter for regular expressions that does a compile time check.
Returns a QuasiQuoter like re, but with given PCRE options.
Escapes the regex metacharacters in a string. In other words, given a string, produces a regex that matches just that string (or case variations of that string, if case-insenstive matching is enabled).
("foo*bar"::String) =~ PCRE.compile (escape "foo*bar") []True
An abstract pointer to a compiled PCRE Regex structure The structure allocated by the PCRE library will be deallocated automatically by the Haskell storage manager.
A type for PCRE compile-time options. These are newtyped CInts,
which can be bitwise-or'd together, using (Data.Bits..|.)
Eq PCREOptionDefined in pcre-light-0.4.1.3 · Text.Regex.PCRE.Light.BaseOrd PCREOptionDefined in pcre-light-0.4.1.3 · Text.Regex.PCRE.Light.BaseRead PCREOptionDefined in pcre-light-0.4.1.3 · Text.Regex.PCRE.Light.BaseShow PCREOptionDefined in pcre-light-0.4.1.3 · Text.Regex.PCRE.Light.BaseLift PCREOptionDefined in pcre-heavy-1.0.0.3 · Text.Regex.PCRE.Heavy · orphanDoes raw PCRE matching (you probably shouldn't use this directly).
rawMatch [re|\w{2}|] "a a ab abc ba" 0 []Just [(4,6)]rawMatch [re|\w{2}|] "a a ab abc ba" 6 []Just [(7,9)]rawMatch [re|(\w)(\w)|] "a a ab abc ba" 0 []Just [(4,6),(4,5),(5,6)]