« エイプリルフールとアクセシビリティ | メイン | Bookmarxy - iPhone用ブックマークレットの開発用Proxy »

正規表現をエスケープする方法のメモ

Javaの場合
引用を表す「\Q」と引用の終わりを表す「\E」で囲む
import java.util.regex.Pattern;
class SampleEncodeRegExp{
    public static void main(String[] args){
        String escapedRegexp = Pattern.quote("a.c");
        System.out.println(escapedRegexp);                  //=> \Qa.c\E
        System.out.println("a.c".matches(escapedRegexp));   //=> true
        System.out.println("abc".matches(escapedRegexp));   //=> false
    }
}
Rubyの場合
メタキャラクタに「\」を付加してエスケープする
String escapedRegexp = Regexp.quote("a.c")
puts escapedRegexp                      # => a\.c
puts "a.c" =~ Regexp.new(escapedRegexp) # => 0
puts "abc" =~ Regexp.new(escapedRegexp) # => nil

String escapedRegexp = Regexp.escape("a.c")
puts escapedRegexp                      # => a\.c
puts "a.c" =~ Regexp.new(escapedRegexp) # => 0
puts "abc" =~ Regexp.new(escapedRegexp) # => nil
JavaScriptの場合
「\W」(英数字以外)を置換する、つまり記号とマルチバイト文字をエスケープする
JavaScriptの正規表現は、エスケープされても意味をなさない場合にはエスケープそのものが無視される(?)
var escapedRegexp = "a.c".replace(/\W/g,"\\$&");
alert(escapedRegexp);                           // => a\.c
alert(new RegExp(escapedRegexp).test("a.c"));   // => true
alert(new RegExp(escapedRegexp).test("abc"));   // => false
JavaScriptについては以下のentryのコメント参照

トラックバック

このエントリーのトラックバックURL:
http://www.kanasansoft.com/cgi/mt/mt-tb.cgi/253

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

Google

タグ クラウド