Up to and including release 8.0 of Tcl, the
built in regular expression handler was good but basic - it lacked some of the shortcuts that keep the specification
of a complex match down to a practical size text string. As from release 8.1, Tcl was enhanced to support extended
regular expressions to the POSIX standard. Since Tcl is often embedded within appliactions which are not
frequently updated, you may well find that your embedded Tcl is limited to the basic set - check your version
using the $tcl_version varlable.
Operator Type | Examples | Description |
Literal Characters Match a character exactly |
a A y 6 % @ | Letters, digits and many special
characters match exactly |
\$ \^ \+ \\ \? | Precede other special characters
with a \ to cancel their regex special meaning |
\n \t \r | Literal new line, tab, return |
\cJ \cG | Control codes |
\xa3 | Hex codes for any character |
Anchors and assertions |
^ | Starts with |
$ | Ends with |
Character groups any 1 character from the group |
[aAeEiou] | any character listed from [ to ] |
[^aAeEiou] | any character except aAeEio or u |
[a-fA-F0-9] | any hex character (0 to 9 or a to f) |
. | any character at all (not new line in some circumstances) |
[[:space:]] | any space character (space \n \r or \t) from Tcl 8.1 only |
[[:alpha:]] | any letter from Tcl 8.1 only |
[[:digit:]] | any digit from Tcl 8.1 only |
[^[:space:]] | any character that is NOT a space from Tcl 8.1 only |
Counts apply to previous element |
+ | 1 or more ("some") |
* | 0 or more ("perhaps some") |
? | 0 or 1 ("perhaps a") |
{4} | exactly 4 from Tcl 8.1 only |
{4,} | 4 or more from Tcl 8.1 only |
{4,8} | between 4 and 8 from Tcl 8.1 only |
Add a ? after any count to turn it sparse (match as
few as possible) rather than have it default to greedy |
Alternation |
| | either, or |
Grouping |
( ) | group for count and save to variable |
(?: ) | group for count but do not save |
The above list show the most commonly used elements of POSIX regular expressions, and
is not exhaustive.