3.1. Literal Regular Expressions in Source Code

Problem

You have been given the regular expression [$"'\n\d/\\] as the solution to a problem. This regular expression consists of a single character class that matches a dollar sign, a double quote, a single quote, a line feed, any digit between 0 and 9, a forward slash, or a backslash. You want to hardcode this regular expression into your source code as a string constant or regular expression operator.

Solution

C#

As a normal string:

"[$\"'\n\\d/\\\\]"

As a verbatim string:

@"[$""'\n\d/\\]"

VB.NET

"[$""'\n\d/\\]"

Java

"[$\"'\n\\d/\\\\]"

JavaScript

/[$"'\n\d\/\\]/

PHP

'%[$"\'\n\d/\\\\]%'

Perl

Pattern-matching operator:

/[\$"'\n\d\/\\]/
m![\$"'\n\d/\\]!

Substitution operator:

s![\$"'\n\d/\\]!!

Python

Raw triple-quoted string:

r"""[$"'\n\d/\\]"""

Normal string:

"[$\"'\n\\d/\\\\]"

Ruby

Literal regex delimited with forward slashes:

/[$"'\n\d\/\\]/

Literal regex delimited with punctuation of your choice:

%r![$"'\n\d/\\]!

Discussion

When this book shows you a regular expression by itself (as opposed to as part of a larger source code snippet), it always shows regular expressions unadorned. This recipe is the only exception. If you’re using a regular expression tester such as RegexBuddy or RegexPal, you would type in the regex this way. If your application accepts a regular expression as user input, the user would type it in this way.

But if you want to hardcode the regular expression into your source code, you have extra work. Carelessly copying and pasting regular expressions ...

Get Regular Expressions Cookbook now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.