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 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access