const regex = new RegExp('^(.+ESTABLISHED[\\s\\S]+?={3}.+?)$', 'gm')
const str = `Security Associations (2 up, 0 connecting):
IPSec-IKEv2[2]: ESTABLISHED 10 seconds ago, 5.79.70.34[a.teletom.ru]...91.77.160.189[192.168.1.64]
IPSec-IKEv2[2]: Remote EAP identity: mac
IPSec-IKEv2[2]: IKEv2 SPIs: 8e03bee2f90a7b0f_i 2b840459b2a53517_r*, rekeying disabled
IPSec-IKEv2[2]: IKE proposal: AES_CBC_256/HMAC_SHA2_256_128/PRF_HMAC_SHA2_256/MODP_2048
IPSec-IKEv2{2}: INSTALLED, TUNNEL, reqid 2, ESP in UDP SPIs: ca7323ca_i 0dd681eb_o
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
IPSec-IKEv2{2}: 0.0.0.0/0 === 10.101.0.2/32
IPSec-IKEv2[1]: ESTABLISHED 8 minutes ago, 5.79.70.34[a.teletom.ru]...91.77.160.189[hon]
IPSec-IKEv2[1]: IKEv2 SPIs: 0fa1c950bdb21ac0_i 0bcd0f3b2bea4cea_r*, rekeying disabled
IPSec-IKEv2[1]: IKE proposal: AES_CBC_128/HMAC_SHA2_256_128/PRF_HMAC_SHA2_256/ECP_256
IPSec-IKEv2{1}: INSTALLED, TUNNEL, reqid 1, ESP in UDP SPIs: cb680131_i 69774a81_o
IPSec-IKEv2{1}: AES_GCM_16_128, 86593 bytes_i (454 pkts, 11s ago), 249805 bytes_o (510 pkts, 11s ago), rekeying disabled
IPSec-IKEv2{1}: 0.0.0.0/0 === 10.101.0.1/32`;
// Reset `lastIndex` if this regex is defined globally
// regex.lastIndex = 0;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}
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 JavaScript, please visit: https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions