お尻のというか、最後に出現する全角のピリオドを変換したい。
2014/02/20
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:[ああ.いい.うう.ええ]
: