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, 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.
.NET and JavaScript have adopted the «$&
» syntax to insert the regex
match into the replacement text. Ruby uses backslashes instead of
dollar signs for replacement text tokens, so use «\&
» for the ...
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.