From 0755a7d9a4ba807d3a5d47ac84224bd146882a08 Mon Sep 17 00:00:00 2001 From: simonm <unknown> Date: Mon, 26 Apr 1999 15:19:28 +0000 Subject: [PATCH] [project @ 1999-04-26 15:19:28 by simonm] Add simple high-level interface to Regex (snaffled from my nofib log analyser). --- ghc/lib/misc/RegexString.lhs | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 ghc/lib/misc/RegexString.lhs diff --git a/ghc/lib/misc/RegexString.lhs b/ghc/lib/misc/RegexString.lhs new file mode 100644 index 000000000000..8bc98a5a02c9 --- /dev/null +++ b/ghc/lib/misc/RegexString.lhs @@ -0,0 +1,34 @@ +----------------------------------------------------------------------------- +RegexString.lhs + +A simple high-level interface to Regex + +(c) Simon Marlow 1997 +----------------------------------------------------------------------------- + +> module RegexString (Regex(..), mkRegex, matchRegex) where + +> import Regex +> import PackedString +> import Array +> import GlaExts + +> type Regex = PatBuffer +> +> mkRegex :: String -> Regex +> mkRegex s = unsafePerformPrimIO ( +> re_compile_pattern (packString s) False False) +> +> matchRegex :: Regex -> String -> Maybe [String] +> matchRegex p s = unsafePerformPrimIO ( +> re_match p str 0 True >>= \m -> +> case m of +> Nothing -> return Nothing +> Just m -> return (Just (matches m str)) +> ) +> where +> str = packString s +> +> matches (REmatch arr _ _ _ _) s = +> [ unpackPS (substrPS s beg (end-1)) | +> index <- [1..], let (beg,end) = arr ! index ] -- GitLab