2.20. Insert the Regex Match into the Replacement Text
Problem
Perform a search-and-replace that converts URLs into HTML
links that point to the URL, and use the URL as the text for the link.
For this exercise, define a URL as “http:”
and all nonwhitespace characters that follow it. For instance,
Please visit
http://www.regexcookbook.com
becomes Please
visit <a
href="http://www.regexcookbook.com">http://www.regexcookbook.com</a>
.
Solution
Regular expression
http:\S+
Regex options: None |
Regex flavors: .NET, Java, JavaScript, PCRE, Perl, Python, Ruby |
Replacement
<a●href="$&">$&</a>
Replacement text flavors: .NET, JavaScript, Perl |
<a●href="$0">$0</a>
Replacement text flavors: .NET, Java, XRegExp, PHP |
<a●href="\0">\0</a>
Replacement text flavors: PHP, Ruby |
<a●href="\&">\&</a>
Replacement text flavor: Ruby |
<a●href="\g<0>">\g<0></a>
Replacement text flavor: Python |
Discussion
Inserting the whole regex match back into the replacement text is an easy way to insert new text before, after, or around the matched text, or even between multiple copies of the matched text. Unless you’re using Python, you don’t have to add any capturing groups to your regular expression to be able to reuse the overall match.
In Perl, «$&
» is actually a variable. Perl
stores the overall regex match in this variable after each successful
regex match. Using «$&
» adds a performance penalty to
all your regexes in Perl, so you may prefer to wrap your whole regex in
a capturing group and use a backreference to that group instead.
.NET and ...
Get Regular Expressions Cookbook, 2nd Edition 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.