import java.text.ParsePosition;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Locale;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Stream;
public class Main {
public static void main
(String[] args
) { // Test
Stream.of(
"9/14/2021 6:01:14 PM 42 (3224) Receive rate: 39338 B/s",
"9/14/2021 6:01:29 PM 92 (940) Receive rate: 215363 B/s"
)
.
forEach(s
-> System.
out.
printf( "Timestamp: %s, Receive rate: %s%n",
getTimestampPart(s),
getReceiveRate(s)
));
}
DateTimeFormatter dtf
= DateTimeFormatter.
ofPattern("M/d/uuuu h:mm:ss a",
Locale.
ENGLISH); return LocalDateTime.
from(dtf.
parse(str,
new ParsePosition(0))).
format(dtf
); }
Matcher matcher = Pattern.compile("(?<=(?:Receive rate: ))\\d+(?=(?: B\\/s))").matcher(str);
return matcher.find() ? matcher.group() : "";
}
}
aW1wb3J0IGphdmEudGV4dC5QYXJzZVBvc2l0aW9uOwppbXBvcnQgamF2YS50aW1lLkxvY2FsRGF0ZVRpbWU7CmltcG9ydCBqYXZhLnRpbWUuZm9ybWF0LkRhdGVUaW1lRm9ybWF0dGVyOwppbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKaW1wb3J0IGphdmEudXRpbC5yZWdleC5NYXRjaGVyOwppbXBvcnQgamF2YS51dGlsLnJlZ2V4LlBhdHRlcm47CmltcG9ydCBqYXZhLnV0aWwuc3RyZWFtLlN0cmVhbTsKCnB1YmxpYyBjbGFzcyBNYWluIHsKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKICAgICAgICAvLyBUZXN0CiAgICAgICAgU3RyZWFtLm9mKAogICAgICAgICAgICAgICAgIjkvMTQvMjAyMSA2OjAxOjE0IFBNICAgNDIgKDMyMjQpICAgUmVjZWl2ZSByYXRlOiAzOTMzOCBCL3MiLAogICAgICAgICAgICAgICAgIjkvMTQvMjAyMSA2OjAxOjI5IFBNICAgOTIgKDk0MCkgICBSZWNlaXZlIHJhdGU6IDIxNTM2MyBCL3MiCiAgICAgICAgKQogICAgICAgIC5mb3JFYWNoKHMgLT4gU3lzdGVtLm91dC5wcmludGYoCgkJICAgICAgICAJCQkiVGltZXN0YW1wOiAlcywgUmVjZWl2ZSByYXRlOiAlcyVuIiwgCgkJICAgICAgICAJCQlnZXRUaW1lc3RhbXBQYXJ0KHMpLAoJCSAgICAgICAgICAgICAgICAgICAgZ2V0UmVjZWl2ZVJhdGUocykKICAgICAgICApKTsKICAgIH0KCiAgICBzdGF0aWMgU3RyaW5nIGdldFRpbWVzdGFtcFBhcnQoU3RyaW5nIHN0cikgewogICAgICAgIERhdGVUaW1lRm9ybWF0dGVyIGR0ZiA9IERhdGVUaW1lRm9ybWF0dGVyLm9mUGF0dGVybigiTS9kL3V1dXUgaDptbTpzcyBhIiwgTG9jYWxlLkVOR0xJU0gpOwogICAgICAgIHJldHVybiBMb2NhbERhdGVUaW1lLmZyb20oZHRmLnBhcnNlKHN0ciwgbmV3IFBhcnNlUG9zaXRpb24oMCkpKS5mb3JtYXQoZHRmKTsKICAgIH0KCiAgICBzdGF0aWMgU3RyaW5nIGdldFJlY2VpdmVSYXRlKFN0cmluZyBzdHIpIHsKICAgICAgICBNYXRjaGVyIG1hdGNoZXIgPSBQYXR0ZXJuLmNvbXBpbGUoIig/PD0oPzpSZWNlaXZlIHJhdGU6ICkpXFxkKyg/PSg/OiBCXFwvcykpIikubWF0Y2hlcihzdHIpOwogICAgICAgIHJldHVybiBtYXRjaGVyLmZpbmQoKSA/IG1hdGNoZXIuZ3JvdXAoKSA6ICIiOwogICAgfQp9