# Package net.sf.saxon.regex

This package contains the code to map XML Schema and XPath regular expressions to a regular expression engine of the underlying Java platform.

Most of the classes implement a regular expression engine derived from Apache's Jakarta project. The code of Jakarta has been modified so that the regular expressions implement the syntax of XSD/XPath regular expressions. There have also been extensive changes for performance reasons

In addition, there are classes to provide direct access to the native JDK regular expression engine. The flags value ";j" may be used to select this engine. The resulting syntax/semantics will not be an exact match to the XPath definition.

Users should not normally need to use these classes directly.

Earlier versions of Saxon included a translator from XPath regular expressions to Java regular expressions, based on that produced by James Clark. This mechanism is no longer used.

- Interface Summary
  Interface | Description
  --- | ---
  RegexIterator | This interface defines an iterator that supports the evaluation of xsl:analyze-string.
  RegexIterator.MatchHandler | Interface defining a call-back action for processing captured groups
  RegularExpression | This interface represents a compiled regular expression.

- Class Summary
  Class | Description
  --- | ---
  ARegexIterator | Class ARegexIterator - provides an iterator over matched and unmatched substrings.
  ARegularExpression | Glue class to interface the Jakarta regex engine to Saxon (The prefix 'A' indicates an Apache regular expression, as distinct from a JDK regular expression).
  ATokenIterator | A ATokenIterator is an iterator over the strings that result from tokenizing a string using a regular expression
  BMPString | An implementation of UnicodeString optimized for strings that contain no characters outside the BMP (i.e.
  Capture | Represents a match of a captured subgroup
  CaseVariants | This class holds data about the case-variants of Unicode characters.
  EmptyString | An implementation of UnicodeString representing a zero-length string.
  GeneralUnicodeString | A Unicode string which, in general, may contain non-BMP characters (that is, codepoints outside the range 0-65535)
  History | The History object is used to avoid backtracking too far.
  JavaRegularExpression | An implementation of RegularExpression that calls the JDK regular expression library directly.
  JRegexIterator | Class JRegexIterator - provides an iterator over matched and unmatched substrings.
  JTokenIterator | A JTokenIterator is an iterator over the strings that result from tokenizing a string using a regular expression, in this case a regular expression evaluated using the JDK regex engine
  LatinString | An implementation of UnicodeString optimized for strings that contain no characters outside the Latin-1 range (i.e.
  Operation | Represents an operation or instruction in the regular expression program.
  Operation.OpAtom | A match against a fixed string of any length
  Operation.OpBackReference | Back-reference
  Operation.OpBOL | Beginning of Line (^)
  Operation.OpCapture | Open paren (captured group)
  Operation.OpCharClass | A match of a single character in the input against a set of permitted characters
  Operation.OpChoice | A choice of several branches
  Operation.OpEndProgram | End of program
  Operation.OpEOL | End of Line ($)
  Operation.OpGreedyFixed | Handle a greedy repetition (with possible min and max) where the size of the repeated unit is fixed.
  Operation.OpNothing | Match empty string
  Operation.OpReluctantFixed | Handle a reluctant repetition (with possible min and max) where the size of the repeated unit is fixed.
  Operation.OpRepeat | Handle a repetition (with possible min and max) where the size of the repeated unit is variable.
  Operation.OpSequence | A sequence of multiple pieces
  Operation.OpTrace | Operation that wraps a base operation and traces its execution
  Operation.OpUnambiguousRepeat | Handle a repetition where there is no ambiguity; if the repeated term is matched in the string, then it cannot match anything other than the repeated term.
  RECompiler | A regular expression compiler class.
  REFlags | Class representing a set of regular expression flags (some combination of i, m, s, x, q).
  RegexPrecondition | A precondition that must be true if a regular expression is to match
  REMatcher | RE is an efficient, lightweight regular expression evaluator/matcher class.
  REMatcher.State |
  REProgram | A class that holds compiled regular expressions.
  UnicodeBlocks | This class provides knowledge of the names and contents of Unicode character blocks, as referenced using the \p{IsXXXXX} construct in a regular expression.
  UnicodeString | An abstract class that efficiently handles Unicode strings including non-BMP characters; it has three subclasses, respectively handling strings whose maximum character code is 255, 65535, or 1114111.

- Exception Summary
  Exception | Description
  --- | ---
  RESyntaxException | Exception thrown to indicate a syntax error in a regular expression.