後方参照
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));
もちろんこれだけでも長い。仕方ないけど。