R: Create character classes

character_class {rex} | R Documentation

## Create character classes

### Description

There are multiple ways you can define a character class.

### Usage

    character_class(x)

    one_of(...)

    any_of(..., type = c("greedy", "lazy", "possessive"))

    some_of(..., type = c("greedy", "lazy", "possessive"))

    none_of(...)

    except_any_of(..., type = c("greedy", "lazy", "possessive"))

    except_some_of(..., type = c("greedy", "lazy", "possessive"))

    range(start, end)

    ":"(start, end)

    exclude_range(start, end)

### Arguments

`x` | text to include in the character class (must be escaped manually)
`...` | `shortcuts`, R variables, text, or other rex functions.
`type` | the type of match to perform. There are three match types `greedy`: match the longest string. This is the default matching type. `lazy`: match the shortest string. This matches the shortest string from the same anchor point, not necessarily the shortest global string. `possessive`: match and don't allow backtracking
`start` | beginning of character class
`end` | end of character class

### Functions

- `character_class`: explicitly define a character class

- `one_of`: matches one of the specified characters.

- `any_of`: matches zero or more of the specified characters.

- `some_of`: matches one or more of the specified characters.

- `none_of`: matches anything but one of the specified characters.

- `except_any_of`: matches zero or more of anything but the specified characters.

- `except_some_of`: matches one or more of anything but the specified characters.

- `range`: matches one of any of the characters in the range.

- `:`: matches one of any of the characters in the range.

- `exclude_range`: matches one of any of the characters except those in the range.

### See Also

Other rex: `%or%`, `capture`, `counts`, `group`, `lookarounds`, `not`, `rex`, `shortcuts`, `wildcards`

### Examples

    # grey = gray
    re <- rex("gr", one_of("a", "e"), "y")
    grepl(re, c("grey", "gray")) # TRUE TRUE

    # Match non-vowels
    re <- rex(none_of("a", "e", "i", "o", "u"))
    # They can also be in the same string
    re <- rex(none_of("aeiou"))
    grepl(re, c("k", "l", "e")) # TRUE TRUE FALSE

    # Match range
    re <- rex(range("a", "e"))
    grepl(re, c("b", "d", "f")) # TRUE TRUE FALSE

    # Explicit creation
    re <- rex(character_class("abcd\\["))
    grepl(re, c("a", "d", "[", "]")) # TRUE TRUE TRUE FALSE

[Package rex version 1.1.2 Index]