<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DZone Snippets: backreferences code</title>
    <link>http://snippets.dzone.com/posts</link>
    <pubDate>Fri, 25 Jul 2008 13:43:40 GMT</pubDate>
    <description>DZone Snippets: backreferences code</description>
    <item>
      <title>Backreferences in Regular Expressions</title>
      <link>http://snippets.dzone.com/posts/show/5096</link>
      <description>This irb session example shows back referencing, where a token enclosed within round brackets is automatically assigned as a variable. That variable is represented by a dollar ($) symbol followed by it's index number starting at 1.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#match capture = STRONG&lt;br /&gt;irb(main):652:0&gt; "&lt;STRONG&gt;text here&lt;/STRONG&gt;"[/&lt;(.*)&gt;.*&lt;\/\1&gt;/]&lt;br /&gt;=&gt; "&lt;STRONG&gt;text here&lt;/STRONG&gt;"&lt;br /&gt;&lt;br /&gt;irb(main):655:0&gt; "abttba"[/^(.)(.).*\2\1$/]&lt;br /&gt;=&gt; "abttba"&lt;br /&gt;irb(main):658:0&gt; "ab123ttba"[/^(.)(.)(123).*\2\1\3$/]&lt;br /&gt;=&gt; nil&lt;br /&gt;irb(main):659:0&gt; "ab123ttba123"[/^(.)(.)(123).*\2\1\3$/]&lt;br /&gt;=&gt; "ab123ttba123"&lt;br /&gt;irb(main):663:0&gt; "how are you"[/(o)*\1/]&lt;br /&gt;=&gt; nil&lt;br /&gt;irb(main):664:0&gt; "how are you"[/(o).*\1/]&lt;br /&gt;=&gt; "ow are yo"&lt;br /&gt;irb(main):685:0&gt; "how are you"[/(o)[^\1]+\1/]&lt;br /&gt;=&gt; "ow are yo"&lt;br /&gt;irb(main):686:0&gt; "how are you"[/(o)[^\1]+\1u/]&lt;br /&gt;=&gt; "ow are you"&lt;br /&gt;irb(main):692:0&gt; "how is Lucy?"[/(o)[^\1]+\1/]&lt;br /&gt;=&gt; nil&lt;br /&gt;irb(main):693:0&gt; "how is Lucy?"[/(o)[^\1]+\1?/]&lt;br /&gt;=&gt; "ow is Lucy?"&lt;br /&gt;&lt;br /&gt;irb(main):702:0&gt; "I eat now?".gsub(/(.)\s(\w+)\s(\w+)(.)/,$1)&lt;br /&gt;=&gt; "I"&lt;br /&gt;irb(main):708:0&gt; "I eat now?".gsub(/(.)\s(\w+)\s(\w+)(.)/,"#{$3} #{$2}")&lt;br /&gt;=&gt; "now eat"&lt;br /&gt;irb(main):711:0&gt; "I eat now?".gsub(/(.)\s(\w+)\s(\w+)(.)/,"#{$3} #{$1} #{$2}#{$4}")&lt;br /&gt;=&gt; "now I eat?"&lt;br /&gt;&lt;br /&gt;irb(main):712:0&gt; $1&lt;br /&gt;=&gt; "I"&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Backreference support in Ruby uses the following variables:&lt;br /&gt;&lt;br /&gt;     $` returns everything before the matched string.&lt;br /&gt;     $' returns everything after the matched string.&lt;br /&gt;     $+ returns whatever the last bracket match matched.&lt;br /&gt;     $&amp; returns the entire matched string. &lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;irb(main):713:0&gt; $&amp;&lt;br /&gt;=&gt; "I eat now?"&lt;br /&gt;&lt;br /&gt;irb(main):715:0&gt; "I eat now? Mother?".gsub(/(.)\s(\w+)\s(\w+)(.)/,"#{$3} #{$1} #{$2}#{$4}")&lt;br /&gt;=&gt; "now I eat? Mother?"&lt;br /&gt;&lt;br /&gt;irb(main):716:0&gt; $'&lt;br /&gt;=&gt; " Mother?"&lt;br /&gt;irb(main):721:0&gt; $'[/M/]&lt;br /&gt;=&gt; "M"&lt;br /&gt;&lt;br /&gt;irb(main):732:0&gt; "I'm hungry ... I eat now? Mother?".gsub(/[^.](.)\s(\w+)\s(\w+)(.)/,"#{$3} #{$1} #{$2}#{$4}")&lt;br /&gt;=&gt; "I'm hungry ...now I eat? Mother?"&lt;br /&gt;irb(main):733:0&gt; $`&lt;br /&gt;=&gt; "I'm hungry ..."&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Note: These Ruby examples should work from &lt;a href="http://www.rubular.com/"&gt;Rubular&lt;/a&gt; [rubular.com].&lt;br /&gt;Reference: &lt;a href="http://www.webreference.com/js/column5/values.html"&gt;Unix Regular Expressions: Backreferences&lt;/a&gt; [webreference.com]</description>
      <pubDate>Sun, 03 Feb 2008 12:37:29 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/5096</guid>
      <author>jrobertson (James Robertson)</author>
    </item>
  </channel>
</rss>
