regex-0.3.0.0: Text/RE.hs
{-# OPTIONS_GHC -fno-warn-dodgy-exports #-}
-- |
-- Module : Text.RE
-- Copyright : (C) 2016-17 Chris Dornan
-- License : BSD3 (see the LICENSE file)
-- Maintainer : Chris Dornan <chris.dornan@irisconnect.com>
-- Stability : RFC
-- Portability : portable
module Text.RE
(
-- * Tutorial
-- $tutorial
-- * How to use this library
-- $use
-- ** The Match Operators
-- $operators
-- * Matches, Match & Capture
Matches(..)
, Match(..)
, Capture(..)
, noMatch
-- ** Matches functions
, anyMatches
, countMatches
, matches
, mainCaptures
-- ** Match functions
, matched
, matchedText
, matchCapture
, matchCaptures
, (!$$)
, captureText
, (!$$?)
, captureTextMaybe
, (!$)
, capture
, (!$?)
, captureMaybe
-- ** Capture functions
, hasCaptured
, capturePrefix
, captureSuffix
-- * IsRegex
, IsRegex(..)
-- * Options
, Options_(..)
, IsOption(..)
, MacroID(..)
, Macros
, emptyMacros
, SimpleRegexOptions(..)
-- * CaptureID
, CaptureID(..)
, CaptureNames
, noCaptureNames
, CaptureName(..)
, CaptureOrdinal(..)
, findCaptureID
-- * Edit
, Edits(..)
, Edit(..)
, LineEdit(..)
, applyEdits
, applyEdit
, applyLineEdit
-- * LineNo
, LineNo(..)
, firstLine
, getLineNo
, lineNo
-- * Parsers
, parseInteger
, parseHex
, parseDouble
, parseString
, parseSimpleString
, parseDate
, parseSlashesDate
, parseTimeOfDay
, parseTimeZone
, parseDateTime
, parseDateTime8601
, parseDateTimeCLF
, parseShortMonth
, shortMonthArray
, IPV4Address
, parseIPv4Address
, Severity(..)
, parseSeverity
, severityKeywords
-- * Replace
, Replace(..)
, ReplaceMethods(..)
, replaceMethods
, Context(..)
, Location(..)
, isTopLocation
, replace
, replaceAll
, replaceAllCaptures
, replaceAllCaptures_
, replaceAllCapturesM
, replaceCaptures
, replaceCaptures_
, replaceCapturesM
, expandMacros
, expandMacros'
-- * Tools
-- ** Grep
, Line(..)
, grep
, grepLines
, GrepScript
, grepScript
, linesMatched
-- ** Lex
, alex
, alex'
-- ** Sed
, SedScript
, sed
, sed'
) where
import Text.RE.Capture
import Text.RE.CaptureID
import Text.RE.Edit
import Text.RE.IsRegex
import Text.RE.LineNo
import Text.RE.Options
import Text.RE.Parsers
import Text.RE.Replace
import Text.RE.Tools.Grep
import Text.RE.Tools.Lex
import Text.RE.Tools.Sed
-- $tutorial
-- We have a regex tutorial at <http://tutorial.regex.uk>. These API
-- docs are mainly for reference.
-- $use
--
-- This module won't provide any operators to match a regular expression
-- against text as it merely provides the toolkit for working with the
-- output of the match operators. You probably won't import it directly
-- but import one of the modules that provides the match operators,
-- which will in tuen re-export this module.
--
-- The module that you choose to import will depend upon two factors:
--
-- * Which flavour of regular expression do you want to use? If you want
-- Posix flavour REs then you want the TDFA modules, otherwise its
-- PCRE for Perl-style REs.
--
-- * What type of text do you want to match: (slow) @String@s, @ByteString@,
-- @ByteString.Lazy@, @Text@, @Text.Lazy@ or the anachronistic @Seq Char@
-- or indeed a good old-fashioned polymorphic operators?
--
-- While we aim to provide all combinations of these choices, some of them
-- are currently not available. We have:
--
-- * "Text.RE.PCRE"
-- * "Text.RE.PCRE.ByteString"
-- * "Text.RE.PCRE.ByteString.Lazy"
-- * "Text.RE.PCRE.RE"
-- * "Text.RE.PCRE.Sequence"
-- * "Text.RE.PCRE.String"
-- * "Text.RE.TDFA"
-- * "Text.RE.TDFA.ByteString"
-- * "Text.RE.TDFA.ByteString.Lazy"
-- * "Text.RE.TDFA.RE"
-- * "Text.RE.TDFA.Sequence"
-- * "Text.RE.TDFA.String"
-- * "Text.RE.TDFA.Text"
-- * "Text.RE.TDFA.Text.Lazy"
-- $operators
--
-- The traditional @=~@ and @=~~@ operators are exported by the @regex@,
-- but we recommend that you use the two new operators, especially if
-- you are not familiar with the old operators. We have:
--
-- * @txt ?=~ re@ searches for a single match yielding a value of type
-- 'Match' @a@ where @a@ is the type of the text you are searching.
--
-- * @txt *=~ re@ searches for all non-overlapping matches in @txt@,
-- returning a value of type 'Matches' @a@.
--
-- See the sections below for more information on these @Matches@ and
-- @Match@ result types.