class TestPossessive {
public static void main
(String args
[]) { String inputText
= "123456789012"; System.
out.
println("Input string: " + inputText
); System.
out.
println("Expected: " + inputText.
replaceFirst("(?:\\d{3,4}(?![89])){2,}+",
">$0<")); System.
out.
println("Outer possessive group: " + inputText.
replaceFirst("(?>(?:\\d{3,4}(?![89])){2,})",
">$0<")); System.
out.
println("Inner possessive group: " + inputText.
replaceFirst("(?>\\d{3,4}(?![89])){2,}",
">$0<")); System.
out.
println("Both: " + inputText.
replaceFirst("(?>(?>\\d{3,4}(?![89])){2,})",
">$0<"));
inputText = "aab";
System.
out.
println("Input string: " + inputText
); System.
out.
println("Expected: " + inputText.
replaceFirst(".{1,3}+b",
">$0<")); System.
out.
println("Outer possessive group: " + inputText.
replaceFirst("(?>.{1,3})b",
">$0<")); System.
out.
println("Inner possessive group: " + inputText.
replaceFirst("(?>.){1,3}b",
">$0<")); System.
out.
println("Both: " + inputText.
replaceFirst("(?>(?>.){1,3})b",
">$0<")); }
}
Y2xhc3MgVGVzdFBvc3Nlc3NpdmUgewogIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZyBhcmdzW10pIHsKICAgIFN0cmluZyBpbnB1dFRleHQgPSAiMTIzNDU2Nzg5MDEyIjsKICAgIFN5c3RlbS5vdXQucHJpbnRsbigiSW5wdXQgc3RyaW5nOiAiICsgaW5wdXRUZXh0KTsKICAgIFN5c3RlbS5vdXQucHJpbnRsbigiRXhwZWN0ZWQ6ICIgKyBpbnB1dFRleHQucmVwbGFjZUZpcnN0KCIoPzpcXGR7Myw0fSg/IVs4OV0pKXsyLH0rIiwgIj4kMDwiKSk7CiAgICBTeXN0ZW0ub3V0LnByaW50bG4oIk91dGVyIHBvc3Nlc3NpdmUgZ3JvdXA6ICIgKyBpbnB1dFRleHQucmVwbGFjZUZpcnN0KCIoPz4oPzpcXGR7Myw0fSg/IVs4OV0pKXsyLH0pIiwgIj4kMDwiKSk7CiAgICBTeXN0ZW0ub3V0LnByaW50bG4oIklubmVyIHBvc3Nlc3NpdmUgZ3JvdXA6ICIgKyBpbnB1dFRleHQucmVwbGFjZUZpcnN0KCIoPz5cXGR7Myw0fSg/IVs4OV0pKXsyLH0iLCAiPiQwPCIpKTsKICAgIFN5c3RlbS5vdXQucHJpbnRsbigiQm90aDogIiArIGlucHV0VGV4dC5yZXBsYWNlRmlyc3QoIig/Pig/PlxcZHszLDR9KD8hWzg5XSkpezIsfSkiLCAiPiQwPCIpKTsKICAgIAogICAgU3lzdGVtLm91dC5wcmludGxuKCk7CiAgICAKICAgIGlucHV0VGV4dCA9ICJhYWIiOwogICAgU3lzdGVtLm91dC5wcmludGxuKCJJbnB1dCBzdHJpbmc6ICIgKyBpbnB1dFRleHQpOwogICAgU3lzdGVtLm91dC5wcmludGxuKCJFeHBlY3RlZDogIiArIGlucHV0VGV4dC5yZXBsYWNlRmlyc3QoIi57MSwzfStiIiwgIj4kMDwiKSk7CiAgICBTeXN0ZW0ub3V0LnByaW50bG4oIk91dGVyIHBvc3Nlc3NpdmUgZ3JvdXA6ICIgKyBpbnB1dFRleHQucmVwbGFjZUZpcnN0KCIoPz4uezEsM30pYiIsICI+JDA8IikpOwogICAgU3lzdGVtLm91dC5wcmludGxuKCJJbm5lciBwb3NzZXNzaXZlIGdyb3VwOiAiICsgaW5wdXRUZXh0LnJlcGxhY2VGaXJzdCgiKD8+Lil7MSwzfWIiLCAiPiQwPCIpKTsKICAgIFN5c3RlbS5vdXQucHJpbnRsbigiQm90aDogIiArIGlucHV0VGV4dC5yZXBsYWNlRmlyc3QoIig/Pig/Pi4pezEsM30pYiIsICI+JDA8IikpOwogIH0KfQ==