import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "^(.+ESTABLISHED[\\s\\S]+?={3}.+?)$";
final String string = "Security Associations (2 up, 0 connecting):\n"
+ " IPSec-IKEv2[2]: ESTABLISHED 10 seconds ago, 5.79.70.34[a.teletom.ru]...91.77.160.189[192.168.1.64]\n"
+ " IPSec-IKEv2[2]: Remote EAP identity: mac\n"
+ " IPSec-IKEv2[2]: IKEv2 SPIs: 8e03bee2f90a7b0f_i 2b840459b2a53517_r*, rekeying disabled\n"
+ " IPSec-IKEv2[2]: IKE proposal: AES_CBC_256/HMAC_SHA2_256_128/PRF_HMAC_SHA2_256/MODP_2048\n"
+ " IPSec-IKEv2{2}: INSTALLED, TUNNEL, reqid 2, ESP in UDP SPIs: ca7323ca_i 0dd681eb_o\n"
+ " IPSec-IKEv2{2}: AES_CBC_128/HMAC_SHA1_96, 63234 bytes_i (390 pkts, 0s ago), 113714 bytes_o (345 pkts, 0s ago), rekeying disabled\n"
+ " IPSec-IKEv2{2}: 0.0.0.0/0 === 10.101.0.2/32\n"
+ " IPSec-IKEv2[1]: ESTABLISHED 8 minutes ago, 5.79.70.34[a.teletom.ru]...91.77.160.189[hon]\n"
+ " IPSec-IKEv2[1]: IKEv2 SPIs: 0fa1c950bdb21ac0_i 0bcd0f3b2bea4cea_r*, rekeying disabled\n"
+ " IPSec-IKEv2[1]: IKE proposal: AES_CBC_128/HMAC_SHA2_256_128/PRF_HMAC_SHA2_256/ECP_256\n"
+ " IPSec-IKEv2{1}: INSTALLED, TUNNEL, reqid 1, ESP in UDP SPIs: cb680131_i 69774a81_o\n"
+ " IPSec-IKEv2{1}: AES_GCM_16_128, 86593 bytes_i (454 pkts, 11s ago), 249805 bytes_o (510 pkts, 11s ago), rekeying disabled\n"
+ " IPSec-IKEv2{1}: 0.0.0.0/0 === 10.101.0.1/32";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
System.out.println("Full match: " + matcher.group(0));
for (int i = 1; i <= matcher.groupCount(); i++) {
System.out.println("Group " + i + ": " + matcher.group(i));
}
}
}
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Java, please visit: https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html