import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main
{
static void printMatch
(String regex,
String str,
int...
groups) {
System.
out.
println("String = " + str
); System.
out.
println("Regex = " + regex
); Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(str);
if (m.matches())
for (int i: groups)
System.
out.
println("Group " + i
+ " = " + m.
group(i
)); }
public static void main
(String[] args
) {
printMatch("^((\\+|00)(\\d{1,3})[\\s-]?)?(\\d{10})$", "+123-9854875847", 3, 4);
printMatch("^(?:(?:\\+|00)(\\d{1,3})[\\s-]?)?(\\d{10})$", "+123-9854875847", 1, 2);
// group not in match -> just prints 'null'
printMatch("^(?:(?:\\+|00)(\\d{1,3})[\\s-]?)?(\\d{10})$", "9854875847", 1, 2);
}
}
aW1wb3J0IGphdmEudXRpbC5yZWdleC5NYXRjaGVyOwppbXBvcnQgamF2YS51dGlsLnJlZ2V4LlBhdHRlcm47CgpwdWJsaWMgY2xhc3MgTWFpbgp7CiAgIHN0YXRpYyB2b2lkIHByaW50TWF0Y2goU3RyaW5nIHJlZ2V4LCBTdHJpbmcgc3RyLCBpbnQuLi4gZ3JvdXBzKQogICB7CiAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiU3RyaW5nID0gIiArIHN0cik7CiAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiUmVnZXggPSAiICsgcmVnZXgpOwogICAgICBQYXR0ZXJuIHAgPSBQYXR0ZXJuLmNvbXBpbGUocmVnZXgpOwogICAgICBNYXRjaGVyIG0gPSBwLm1hdGNoZXIoc3RyKTsKICAgICAgaWYgKG0ubWF0Y2hlcygpKQogICAgICAgICBmb3IgKGludCBpOiBncm91cHMpCiAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiR3JvdXAgIiArIGkgKyAiID0gIiArIG0uZ3JvdXAoaSkpOwogICAgICBTeXN0ZW0ub3V0LnByaW50bG4oKTsKICAgfQogICAKICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykKICAgewogICAgICBwcmludE1hdGNoKCJeKChcXCt8MDApKFxcZHsxLDN9KVtcXHMtXT8pPyhcXGR7MTB9KSQiLCAiKzEyMy05ODU0ODc1ODQ3IiwgMywgNCk7CiAgICAgIHByaW50TWF0Y2goIl4oPzooPzpcXCt8MDApKFxcZHsxLDN9KVtcXHMtXT8pPyhcXGR7MTB9KSQiLCAiKzEyMy05ODU0ODc1ODQ3IiwgMSwgMik7CiAgICAgIC8vIGdyb3VwIG5vdCBpbiBtYXRjaCAtPiBqdXN0IHByaW50cyAnbnVsbCcKICAgICAgcHJpbnRNYXRjaCgiXig/Oig/OlxcK3wwMCkoXFxkezEsM30pW1xccy1dPyk/KFxcZHsxMH0pJCIsICI5ODU0ODc1ODQ3IiwgMSwgMik7CiAgIH0KfQo=