プログラマメモ2 - programmer no memo2

お尻のというか、最後に出現する全角のピリオドを変換したい。 2014/02/20

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:[ああ.いい.うう.ええ]


: