const regex = /^(?<time>\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d+) \[(?<loglevel>\w)\] (?<message>.*)/gm;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('^(?<time>\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}\\.\\d+) \\[(?<loglevel>\\w)\\] (?<message>.*)', 'gm')
const str = `2020-04-30 08:26:09.379 [I] DOPiX de.icongmbh.dope.gui.web.DopeWebGui 32.2.4 (22323279) debug J00000000003-aa67ca3ef26946349158ec2da0216758 (""): (:)
### GUI J00000000002-7a8d7048a4f94b78a8a5c24341d763df setStatus mit Status: (I:kernel#0)
2020-04-30 08:26:09.381 [I] DOPiX de.icongmbh.dope.gui.web.DopeWebGui 32.2.4 (22323279) debug J00000000003-aa67ca3ef26946349158ec2da0216758 (""): (:)
### GUI J00000000002-7a8d7048a4f94b78a8a5c24341d763df creating status gui object for stepper
2020-04-30 08:26:09.381 [I] DOPiX de.icongmbh.dope.gui.web.DopeWebGui 32.2.4 (22323279) debug J00000000003-aa67ca3ef26946349158ec2da0216758 (""): (:)
### GUI J00000000002-7a8d7048a4f94b78a8a5c24341d763df transfer object for status set created!
2020-04-30 08:26:09.381 [I] DOPiX de.icongmbh.dope.gui.web.queue.OutputQueue 32.2.4 (22323279) debug J00000000003-aa67ca3ef26946349158ec2da0216758 (""): (:)
### GUI J00000000002-7a8d7048a4f94b78a8a5c24341d763df +++++ adding request to queue:
##### Transfer Object Output
StatusID: 0(OK)
SourceID: 3(GUI/Poll result)
FunctionID/SubFunctionID: 10/-1
(SetStatus)
RequestAgainHint false
SessionID null
TypTransferObject class de.icongmbh.dope.gui.web.DOPEGuiStatus
ArrayTransferObjects null
##### Transfer Object Output Ends
2020-04-30 08:26:09.381 [I] DOPiX de.icongmbh.dope.gui.web.queue.OutputQueue 32.2.4 (22323279) debug J00000000003-aa67ca3ef26946349158ec2da0216758 (""): (:)
### GUI J00000000002-7a8d7048a4f94b78a8a5c24341d763df Added request to queue, request list size: 7 (0|3|201|-1 / 0|3|19|-1 / 0|3|7|0 / 0|3|5000|-1 / 0|3|19|-1 / 0|3|20|1 / 0|3|10|-1 / )
`;
// 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