読者です 読者をやめる 読者になる 読者になる

Android 正規表現は、注意が必要

正規表現

うっかりすると、Android で、2バイト文字を含んだ文字列(全角文字と半角カナ文字など)に対して、
正規表現java.util.regex.Pattern を処理すると期待どおりに動作しない。

正規表現が、US ASCII Only しかだめだから。。。

2バイト文字を除いた部分で正規表現したいのであれば、

  [^\p{ASCII}] にマッチする文字を全て捨ててから、

java.util.regex.Matcher でマッチを実行すれば良い。

つまり、

   String target = str.replace("[^\\p{ASCII}]","");

として、

   Matcher m = pattern.matcher(target);
   m.find();

のようにする。