後方参照

Javaだと

import java.util.regex.*;
class LinkFinder {
  public static void main(String args[]) {
	Pattern pattern = Pattern.compile("href=\"(.+?)\"");
	Matcher matcher = pattern.matcher("<a href=\"index.html\">トップへ</a>");
	if(matcher.find())
	    System.out.println(matcher.group(1));
    }
}

Rubyだと

if '<a href="index.html">トップへ</a>"'=~/href=\"(.+?)\"/
  puts $1
end

やはりJavaだと長いな。仕方ないけど。
早さが違うしね。ちょっとJavaが不利な書き方なので、
処理そのものの部分だけピックアップすると、

	Pattern pattern = Pattern.compile("href=\"(.+?)\"");
	Matcher matcher = pattern.matcher("<a href=\"index.html\">トップへ</a>");
	if(matcher.find())
	    System.out.println(matcher.group(1));

もちろんこれだけでも長い。仕方ないけど。