>> << Ndx Usr Pri Phr Dic Rel Voc !: wd Help User

# Regular Expression Utilities

The script `system\packages\regex\regbuild.ijs` contains definitions to for building regular expression patterns.

Many of the verbs below may enclose its argument in parentheses (to make it a subexpression). For example,
`anyof 'abc'` returns `'(abc)*'`.

The argument is only put in parentheses if necessary.
`anyof set 'abc'` is `'[abc]*'`.

The following verbs correspond directly to a feature of the regular expression notation:

    set chars

returns set construction for chars

       set 'abc'

    [abc]

    not chars

set of non-matching chars

       set not 'abc'

    [^abc]

    sub pat

make a subexpression

       set 'abc'

    (abc)

    someof pat

pattern matching 1 or more pat

       someof 'abc'

    (abc)+

    (min,max) of pat

pattern matchin min up to max of pat

       2 4 of 'abc'

    (abc){2,4}

    pat1 or pat2

pattern matching either pat1 or pat2

       'abc' or 'd'

    abc|x

    pat1 or pat2

pattern matching pat1 immediately followed by pat2

       'action=' by 'move' or 'copy'

    action=(move|copy)

    sub pat

makes pat a subexpression

       sub 'abc'

    (abc)

    bkref refnum

back-reference to a previous subexpression

       bkref 1

    \1

Some nouns can be used as parts of regular expressions:

    white

pattern matching one or more whitespace characters

    owhite

pattern matching optional whitespace

    sol

pattern matching the start of a line

    eol

pattern matching the end of a line

    any

pattern matching any character

Finally, some miscellaneous verbs

    plain text

returns a regular expression matching the plain text

       plain 'dir j.*'

    dir j\.\*

    pat1 between y

result is elements of y catenated together with pat1 between each

       ' *' between 'abc'

    a *b *c

       ' *' between 'p1';'p2';'p3|p4'

    p1 *p2 *(p3|p4)

    comment nb pattern

add comment to pattern

Interpretation of a pattern always stops at the first null character (`0{a.`). The `nb` verb makes use of this by catenating a null character and comment at the end of a pattern.

       p=. rxcomp 'some digits' nb '[[:digit:]]+'
       rxinfo p
    +-+----------------------------+
    |1|[[:digit:]]+ NB. some digits|
    +-+----------------------------+

    setchars setpat

returns list of characters matching a set pattern

       setchars '[a-d[:digit:]]'

    0123456789abcd

Character classes
The following nouns are strings which are used within sets to specify a character class:

       alnum, alpha, blank, cntrl, digit, graph,
       lower, print, punct, space, upper, xdigit

For example,

       alpha=. '[:alpha:]'

Corresponding nouns, named with a leading uppercase, are patterns specifying a set of the character class, for example,

       Alpha=. '[[:alpha:]]'    NB.  (same as    set alpha)

J patterns
The following nouns, `defined in packages\regex\regj.ijs` , are patterns which match elements of J code:

    Jname

matches a J name

    Jnumitem, Jnum

matches a J numeric item or array (constant)

    Jchar

matches a J character string

    Jconst

matches a J numeric or character constant, include a. and a:

    Jgassign, Jlassign, Jassign

matches J global, local, or either assignment

    Jlpar, Jrpar

match J's left and right parentheses

    Jsol, Jeol

match the start or end of a J sentence
(ignores leading blanks and trailing blanks/comments)

>> << Ndx Usr Pri Phr Dic Rel Voc !: wd Help User