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)
        ));
    }

    static String getTimestampPart(String str) {
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("M/d/uuuu h:mm:ss a", Locale.ENGLISH);
        return LocalDateTime.from(dtf.parse(str, new ParsePosition(0))).format(dtf);
    }

    static String getReceiveRate(String str) {
        Matcher matcher = Pattern.compile("(?<=(?:Receive rate: ))\\d+(?=(?: B\\/s))").matcher(str);
        return matcher.find() ? matcher.group() : "";
    }
}