const regex = /(where|and|or)\s*([^\s=]*?)\s*(=|<>|>=|=<|>|<)\s*("|'|\\"|\\')([^\4]*?)\4/g;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('(where|and|or)\\s*([^\\s=]*?)\\s*(=|<>|>=|=<|>|<)\\s*("|\'|\\\\"|\\\\\')([^\\4]*?)\\4', 'g')
const str = `REPLACE active_watchers_log SET sent_msg="NOTIFY sip:995582134@192.168.26.5:5062 SIP/2.0
Via: SIP/2.0/UDP 10.23.0.2;branch=z9hG4bKfd9d.445c5656000000000000000000000000.0
To: <sip:995582134@teste.sip.90e9.com>;tag=89b8ace0d56977e7
From: <sip:user_7z7b6s@teste.sip.90e9.com>;tag=9e489e1f14886363a3aeebf53b8dbf2c-4976
CSeq: 34 NOTIFY
Call-ID: bec506c8-48da1ac1@192.168.26.5
Content-Length: 277
Max-Forwards: 70
Event: dialog
Contact: <sip:10.23.0.2:5060;transport=udp>
Subscription-State: active;expires=600
Content-Type: application/dialog-info+xml
<?xml version=\\"1.0\\"?>
<dialog-info xmlns=\\"urn:ietf:params:xml:ns:dialog-info\\" version=\\"34\\" state=\\"full\\" entity=\\"sip:user_7z7b6s@teste.sip.90e9.com\\">
<dialog id=\\"615293b33c62dec073e05d9421e9f48b\\" direction=\\"recipient\\">
<state>terminated</state>
</dialog>
</dialog-info>
", received_msg="SIP/2.0 200 OK
To: <sip:995582134@teste.sip.90e9.com>;tag=89b8ace0d56977e7
From: <sip:user_7z7b6s@teste.sip.90e9.com>;tag=9e489e1f14886363a3aeebf53b8dbf2c-4976
Call-ID: bec506c8-48da1ac1@192.168.26.5
CSeq: 34 NOTIFY
Via: SIP/2.0/UDP 10.23.0.2;branch=z9hG4bKfd9d.445c5656000000000000000000000000.0
Server: Cisco/SPA504G-7.6.0
Content-Length: 0
", time=1453481591, result=200 where pres_uri="sip:user_7z7b6s@teste.sip.90e9.com" and callid="bec506c8-48da1ac1@192.168.26.5" and watcher_user=\\"995582134\\" and watcher_domain=\\'teste.sip.90e9.com\\' and to_user="user_7z7b6s" and to_domain="teste.sip.90e9.com"`;
// 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