regular expression

regular expression

A

regular expression

is a particular meta-syntax for specifying

regular grammars

, which has many useful applications.

While variations abound, fundamentally a regular expression consists of the following pieces:

•

Parentheses can be used for grouping and nesting, and must contain a fully-formed regular expression.

•

The

|

symbol can be used for denoting alternatives. Some

specifications

do not provide nesting or alternatives.

•

There are also a number of postfix

operators

. The

?

operator means that the preceding

element

can either be present or non-present, and corresponds to a rule of the form

A

→

B

|

λ

.

•

The

*

operator means that the preceding element can be present zero or more times, and corresponds to a rule of the form

A

→

B

A

|

λ

.

•

The

+

operator means that the preceding element can be present one or more times, and corresponds to a rule of the form

A

→

B

A

|

B

.

Note that while these rules are not immediately in

regular

form, they can be transformed so that they are.

Formally, let

S

=

{

∅

,

∪

,

*

,

(

,

)

}

and

Σ

an

alphabet

disjoint

from

S

. Consider the

language

L

⁢

(

Σ

)

over

Σ

∪

S

specified below

1.

∅

∈

L

⁢

(

Σ

)

,

2.

a

∈

L

⁢

(

Σ

)

for each

a

∈

Σ

,

3.

if

u

∈

L

⁢

(

Σ

)

, then

u

*

∈

L

⁢

(

Σ

)

,

4.

if

u

1

,

u

2

∈

L

⁢

(

Σ

)

, then

(

u

1

∪

u

2

)

and

(

u

1

⁢

u

2

)

are both in

L

⁢

(

Σ

)

, and

5.

among all languages over

Σ

∪

S

satisfying conditions 1-4,

L

⁢

(

Σ

)

is the smallest.

Then any element

u

∈

L

⁢

(

Σ

)

is called a

regular expression

over

Σ

.

Here is an example of a regular expression that specifies a

grammar

that generates the binary

representation

of all

multiples

of 3 (and only multiples of 3).

(

0

*

⁢

(

1

⁢

(

01

*

⁢

0

)

*

⁢

1

)

*

)

*

⁢

0

*

This specifies the

context-free grammar

(in BNF):

S

::=

A

⁢

B

A

::=

C

⁢

D

B

::=

0

B

|

λ

C

::=

0

C

|

λ

D

::=

1

⁢

E

⁢

𝟷

E

::=

F

E

|

λ

F

::=

0

⁢

G

⁢

𝟶

G

::=

1

G

|

λ

A little further work is required to transform this grammar into an acceptable form for regular grammars, but it can be shown that this grammar (and any grammar specified by a regular expression) is

equivalent

to some regular grammar.

One can understand the language described by a regular expression in another way, by viewing the regular expression operators as shorthand for various set-theoretic

operations

. Formally, the

language

L

⁢

(

u

)

over

Σ

associated with a regular expression

u

over

Σ

is inductively defined as follows:

•

L

⁢

(

∅

)

=

∅

,

•

L

⁢

(

a

)

=

{

a

}

whenever

a

∈

Σ

,

•

L

⁢

(

u

*

)

=

L

⁢

(

u

)

*

, where the

*

on the right side is the

Kleene star

operation on sets,

•

L

⁢

(

(

u

1

⁢

u

2

)

)

=

L

⁢

(

u

1

)

⁢

L

⁢

(

u

2

)

, where the right side denotes the

concatenation

of two sets, and

•

L

⁢

(

(

u

1

∪

u

2

)

)

=

L

⁢

(

u

1

)

∪

L

⁢

(

u

2

)

, where

∪

on the right side is the union operation on sets.

A language

L

over

Σ

is regular iff there is a regular expression

u

over

Σ

such that

L

=

L

⁢

(

u

)

.

With this

interpretation

, it is quite straightforward to design a

non-deterministic finite automaton

that recognizes the language described by a regular expression. Of course, for computer implementations, one must transform this into a

deterministic finite automaton

, but there are various

algorithms

for doing this efficiently. This process, production of a non-deterministic

automaton

and conversion to an equivalent deterministic automaton is approximately what is done in software packages implementing regular expression

searching

. In fact, most such packages implement operations impossible for a finite automaton, such as requiring a later part of the string to be the same as a previous part (the language

{

A

n

⁢

B

⁢

A

n

⁢

for

⁢

n

≥

0

}

is not regular but can be matched by most “regular expression” software; such capabilities are called “extended regular expressions”. None of these systems are powerful enough to recognize the language of balanced parentheses.

Regular expressions have many applications. Quite often they are used for powerful string

matching

and

substitution

features in many text editors and programming languages.

Title

regular expression

Canonical name

RegularExpression

Date of creation

2013-03-22 12:26:56

Last modified on

2013-03-22 12:26:56

Owner

CWoo (3771)

Last modified by

CWoo (3771)

Numerical id

17

Author

CWoo (3771)

Entry type

Definition

Classification

msc 20M35

Classification

msc 68Q70

Related topic

RegularLanguage

Related topic

KleeneStar

Related topic

KleeneAlgebra

Generated on Fri Feb 9 19:35:49 2018 by

LaTeXML