お尻のというか、最後に出現する全角のピリオドを変換したい。
2014/02/20 
 java
正規表現
java
正規表現
javaです。 
最後に出現する全角のピリオドを変換したい。
どいうことかというと
ああ.いい.うう.ええとある場合
ああ.いい.うう.ええということ
はじめ、
"(.*).(.*)$"➡"$1.$2"という正規表現を考えて、お尻からマッチだと思ったけど、"(.*).(.*)"でよかったみたい。
ためしたコードと結果は以下
package regex;
import java.util.regex.Pattern;
public class TestZenkakuDot {
    public static void main(String[] args) {
        a();
    }
    static void a() {
        test置き換え("", "");
        test置き換え("あああ", "あああ");
        test置き換え(".", ".");
        test置き換え("..", "..");
        test置き換え("...", "...");
        test置き換え("....", "....");
        test置き換え("あああ.いいい.ううう", "あああ.いいい.ううう");
        test置き換え("あああ.いいい.ううう.", "あああ.いいい.ううう.");
        test置き換え("あああ.いいい.ううう..", "あああ.いいい.ううう..");
        test置き換え(".あああ.いいい.ううう..", ".あああ.いいい.ううう..");
        test置き換え("ああ.いい.うう.ええ", "ああ.いい.うう.ええ");
    }
    static void test置き換え(String target, String expected) {
        // return Pattern.compile(regex).matcher(this).replaceAll(replacement);
        final String REGEX = "(.*).(.*)";
        // final String REGEX = "(.*).(.*)$";
        String s;
        s = target.replaceAll(REGEX, "$1.$2");
        System.out.printf("%s actual:[%s] == expected:[%s]%n",
                s.equals(expected) ? "ok" : "ng", s, expected);
    }
}
結果
ok actual:[] == expected:[]
ok actual:[あああ] == expected:[あああ]
ok actual:[.] == expected:[.]
ok actual:[..] == expected:[..]
ok actual:[...] == expected:[...]
ok actual:[....] == expected:[....]
ok actual:[あああ.いいい.ううう] == expected:[あああ.いいい.ううう]
ok actual:[あああ.いいい.ううう.] == expected:[あああ.いいい.ううう.]
ok actual:[あああ.いいい.ううう..] == expected:[あああ.いいい.ううう..]
ok actual:[.あああ.いいい.ううう..] == expected:[.あああ.いいい.ううう..]
ok actual:[ああ.いい.うう.ええ] == expected:[ああ.いい.うう.ええ]
: