Training, Open Source computer languages

This is page

Our email: • Phone: 01144 1225 708225

For 2023 - we are now fully retired from IT training.
We have made many, many friends over 25 years of teaching about Python, Tcl, Perl, PHP, Lua, Java, C and C++ - and MySQL, Linux and Solaris/SunOS too. Our training notes are now very much out of date, but due to upward compatability most of our examples remain operational and even relevant ad you are welcome to make us if them "as seen" and at your own risk.

Lisa and I (Graham) now live in what was our training centre in Melksham - happy to meet with former delegates here - but do check ahead before coming round. We are far from inactive - rather, enjoying the times that we are retired but still healthy enough in mind and body to be active!

I am also active in many other area and still look after a lot of web sites - you can find an index ((here))

Perl Regular Expressions
In Perl, you write regular expressions between / delimiters (or you can change the delimiter if you wish), and you add modifiers after the closing /. To match the contents of a variable to a regular expression, use the =~ operator. Regular expressions are also used by perl built in functions such as grep and split, and by the s operator.

Perl uses a very full set of elements within its regular expressions, most of which are terse so hard for the newcomer to follow when maintaining code. It predates, so does not follow, the POSIX standard.

Perl 6, currently under development, will support grammars and rules rather than regular expressions. Grammars and Rules will take pattern matching to a whole new level, and tools will be available to covert code - in other words, rules and grammars will do everything that the old Regular Expressions didn't, and more.

Operator TypeExamplesDescription
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 \rLiteral new line, tab, return
\cJ \cGControl codes
\xa3Hex codes for any character
Anchors and assertions ^Starts with
$Ends with
\b \Bon a word boundary,
NOT on a word boundary
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)
\sany space character (space \n \r or \t)
\wany word character (letter digit or _)
\dany digit (0 through 9)
\S \W \Dany character that is NOT a space
word character or digit
apply to previous element
+1 or more ("some")
*0 or more ("perhaps some")
?0 or 1 ("perhaps a")
{4}exactly 4
{4,}4 or more
{4,8}between 4 and 8
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
Variables $xyzInsert contents of $xyz into regular expression
\1 \2Back reference to 1st, 2nd etc matched groups

After the closing / of your regular expression, you can add one or more modifiers to change its behaviour.
iIgnore case in matching
gGlobal match. Return a list of all matches (list context) or return the next match (scalar context)
xWhite space is to be treated as a comment (otherwise it matches exactly)
s. to match everything including new line (otherwise it matches everything except new line)
m^ and $ to match embedded new lines
oTell compiler that regular expression doesn't change even if it includes a variable reference
es command only. Execute the output before you substitute it in

The following Perl functions and operators use regular expressions
Function / Operatoruse
 If you write a regular expression without an operator, it matches the regular expression against the contents of the $_ variable.
=~Match the regular expression to the right against the variable to the left
sSubstitute the matched regular expression with a replacement string
grepFilter a list for all member scalars that match the regular expression
splitsplit a scalar into a list, dividing the elements at the regular expression

The above lists show the most commonly used elements of Perl regular expressions, and are not exhaustive.

In Perl, you can change the / regular expression delimiter to almost any other special character if you preceed it with the letter m (for match); if you change to ( { or [, the balancing end expression character becomes ) } or ].

Back to Regular Expression Home Page
Jump to Elements of a regular expression
Order a Regular Expression Mousemat for £4.95 inclusive

© WELL HOUSE CONSULTANTS LTD., 2023: Well House Manor • 48 Spa Road • Melksham, Wiltshire • United Kingdom • SN12 7NY
PH: 01144 1225 708225 • FAX: 01144 1225 793803 • EMAIL: • WEB: • SKYPE: wellho