# Io Reference

Parsers / Regex / Regex

The Regex addon adds support for Perl regular expressions using the PCRE library by Philip Hazel.

#### Example 1

    Io> re := "is.*a" asRegex
    Io> "This is a test. This is also a test." \
        allMatchesOfRegex(" is[^.]*a") replaceAllWith(" is not a")
    ==> "This is not a test. This is not a test.

#### Example 2

    Io> "11aabb" allMatchesOfRegex("aa*")
    ==> list("a", "a")

    Io> re := "(wom)(bat)" asRegex
    Io> "wombats are cuddly" matchesOfRegex(re) replaceAllWith("$2$1!")
    ==> batwom!s are cuddly

asRegex

Returns self.
asString

Returns a string containing a textual representation of the receiver.
captureCount

Returns the number of captures defined by the pattern.
caseless

Returns a case insensitive clone of the receiver, or self if the receiver itself is case insensitive:

    	Io> "WORD" matchesRegex("[a-z]+")
    	==> false

    	Io> "WORD" matchesRegex("[a-z]+" asRegex caseless)
    	==> true

dotAll

Returns a clone of the receiver with the dotall option turned on, or self if the receiver itself has the option turned on.

In dotall mode, "." matches any character, including newline. By default it matches any character except newline.

    	Io> "A\nB" matchesOfRegex(".+") next string
    	==> A

    	Io> "A\nB" matchesOfRegex(".+" asRegex dotAll) next string
    	==> A\nB

extended

Returns a clone of the receiver with the extended option turned on, or self if the receiver itself has the option turned on.

In extended mode, a Regex ignores any whitespace character in the pattern except when escaped or inside a character class. This allows you to write clearer patterns that may be broken up into several lines.

Additionally, you can put comments in the pattern. A comment starts with a "#" character and continues to the end of the line, unless the "#" is escaped or is inside a character class.

isCaseless

Returns true if the receiver is case insensitive, false if not.
isDotAll

Returns true if the receiver is in dotall mode, false if not.
isExtended

Returns true if the receiver is in extended mode, false if not.
isMultiline

Returns true if the receiver is in multiline mode, false if not.
matchesIn(aString)

Returns a RegexMatches object that enumerates the matches of the receiver in the given string.
multiline

Returns a clone of the receiver with the multiline option turned on, or self if the receiver itself has the option turned on.

In multiline mode, "^" matches at the beginning of the string and at the beginning of each line; and "$" matches at the end of the string, and at the end of each line. By default "^" only matches at the beginning of the string, and "$" only matches at the end of the string.

    	Io> "A\nB\nC" allMatchesForRegex("^.")
    	==> list("A")

    	Io> "A\nB\nC" allMatchesForRegex("^." asRegex multiline)
    	==> list("A", "B", "C")

nameTable

Returns a list with the name of each capture. The first element will always be nil, because it corresponds to the whole match. The second element will contain the name of the first capture, or nil if the first capture has no name. And so on.
namedCaptures

Returns a Map that contains the index of each named group.
names

Returns a list of the name of each named capture. If there are no named captures, the list will be empty.
notCaseless

The reverse of caseless.
notDotAll

The reverse of dotAll.
notExtended

The reverse of extended.
notMultiline

The reverse of multiline.
pattern

Returns the pattern string that the receiver was created from.
version

Returns a string with PCRE version information.
with(pattern)

Returns a new Regex created from the given pattern string.