const regex = new RegExp('^\\s+(?P<user>[\\w[:print:]]+) [\\w\\-\\.]+ [[:print:]]+ ?\\(v[\\w\\.]+\\) \\([\\w\\-\\.]+\\/\\d+ \\d+\\)\\, start \\w+ \\d+\\/\\d+ \\d+\\:\\d+(\\,\\s(?P<licenses>\\d+)\\s\\w+|)(\\s+\\(linger\\:\\s\\d+\\s\\/\\s\\d+\\))?$', 'gm')
const str = `
userone host01 :78 APS Base (v19.100) (licserver/27010 7401), start Thu 5/14 15:31, 2 licenses
userone host01 :78 APS Multi-core (Max. 16 cores) (v19.100) (licserver/27010 7501), start Thu 5/14 15:31, 4 licenses
userone host01 :75 APS Base (v19.100) (licserver/27010 18901), start Thu 5/14 15:33, 2 licenses
userone host01 :75 APS Multi-core (Max. 16 cores) (v19.100) (licserver/27010 19001), start Thu 5/14 15:33, 4 licenses
userone host01 :76 APS Base (v19.100) (licserver/27010 18702), start Thu 5/14 15:34, 2 licenses
userone host01 :76 APS Multi-core (Max. 16 cores) (v19.100) (licserver/27010 17002), start Thu 5/14 15:34, 4 licenses
userone host01 :77 APS Base (v19.100) (licserver/27010 23302), start Thu 5/14 15:34, 2 licenses
userone host01 :77 APS Multi-core (Max. 16 cores) (v19.100) (licserver/27010 23801), start Thu 5/14 15:34, 4 licenses
userone host01 :60 APS Base (v19.100) (licserver/27010 23901), start Thu 5/14 15:34, 2 licenses
userone host01 :60 APS Multi-core (Max. 16 cores) (v19.100) (licserver/27010 24001), start Thu 5/14 15:34, 4 licenses
userone host01 :68 APS Base (v19.100) (licserver/27010 25501), start Thu 5/14 15:34, 2 licenses
userone host01 :68 APS Multi-core (Max. 16 cores) (v19.100) (licserver/27010 25601), start Thu 5/14 15:34, 4 licenses
userone host01 :58 APS Base (v19.100) (licserver/27010 22803), start Thu 5/14 15:34, 2 licenses
userone host01 :58 APS Multi-core (Max. 16 cores) (v19.100) (licserver/27010 27801), start Thu 5/14 15:34, 4 licenses
useronexr host01 :51 Spectre X Base (v19.100) (licserver/27010 61140), start Sat 5/16 13:41, 3 licenses
useronexr host01 :52 Spectre X Base (v19.100) (licserver/27010 31125), start Sat 5/16 13:43, 3 licenses
useronexr host01 :76 Spectre X Base (v19.100) (licserver/27010 53463), start Sat 5/16 13:47, 3 licenses
useronexr host01 :69 Spectre X Base (v19.100) (licserver/27010 41523), start Sat 5/16 13:47, 3 licenses
useronexr host01 :51 Spectre X Multi-core (Max. 16 cores) (v19.100) (licserver/27010 46233), start Sat 5/16 14:08, 6 licenses
useronex host01 :52 Spectre X Multi-core (Max. 16 cores) (v19.100) (licserver/27010 32328), start Sat 5/16 14:10, 6 licenses
useronex host01 :69 Spectre X Multi-core (Max. 16 cores) (v19.100) (licserver/27010 10953), start Sat 5/16 14:16, 6 licenses
useronex host02 :76 Spectre X Multi-core (Max. 16 cores) (v19.100) (licserver/27010 32114), start Sat 5/16 14:17, 6 licenses
useronexr host02 localhost:10 APS Base (v19.100) (licserver/27010 31935), start Sun 5/17 10:18, 2 licenses
useronexr host02 localhost:10 APS Multi-core (Max. 16 cores) (v19.100) (licserver/27010 6614), start Sun 5/17 10:21, 4 licenses
`;
// 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