const regex = /Data Transfer Element (\d+):(Full|Empty)(?: \(Storage Element (\d+) Loaded\):VolumeTag = (\w+))?/g;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('Data Transfer Element (\\d+):(Full|Empty)(?: \\(Storage Element (\\d+) Loaded\\):VolumeTag = (\\w+))?', 'g')
const str = `Storage Changer /dev/sg2:2 Drives, 48 Slots ( 0 Import/Export )
Data Transfer Element 0:Full (Storage Element 2 Loaded):VolumeTag = ALF029L5
Data Transfer Element 1:Empty
Storage Element 1:Full
Storage Element 2:Empty
Storage Element 3:Empty
Storage Element 4:Full
Storage Element 5:Full :VolumeTag=AEF812LV
Storage Element 6:Full :VolumeTag=ALF021L5
Storage Element 7:Full :VolumeTag=ALF019L5
Storage Element 8:Full
Storage Element 9:Full :VolumeTag=ALF035L5
Storage Element 10:Full :VolumeTag=AEF839LV
Storage Element 11:Full :VolumeTag=ALF018L5
Storage Element 12:Empty
Storage Element 13:Full :VolumeTag=AEF832LV
Storage Element 14:Full :VolumeTag=ALF002L5
Storage Element 15:Full :VolumeTag=ALF020L5
Storage Element 16:Full :VolumeTag=ALF016L5
Storage Element 17:Full :VolumeTag=AEF831LV
Storage Element 18:Full
Storage Element 19:Full :VolumeTag=AEF814LV
Storage Element 20:Full :VolumeTag=ALF010L5
Storage Element 21:Full :VolumeTag=ALF022L5
Storage Element 22:Full :VolumeTag=ALF001L5
Storage Element 23:Full :VolumeTag=AEF830LV
Storage Element 24:Full :VolumeTag=ALF008L5
Storage Element 25:Full :VolumeTag=ALF038L5
Storage Element 26:Full
Storage Element 27:Full :VolumeTag=ALF034L5
Storage Element 28:Full :VolumeTag=ALF009L5
Storage Element 29:Full :VolumeTag=AEF821LV
Storage Element 30:Full :VolumeTag=ALF013L5
Storage Element 31:Full :VolumeTag=AEF822LV
Storage Element 32:Full :VolumeTag=ALF006L5
Storage Element 33:Full :VolumeTag=ALF028L5
Storage Element 34:Full :VolumeTag=AEF813LV
Storage Element 35:Full :VolumeTag=ALF007L5
Storage Element 36:Full :VolumeTag=ALF012L5
Storage Element 37:Full :VolumeTag=ALF005L5
Storage Element 38:Full :VolumeTag=ALF027L5
Storage Element 39:Full :VolumeTag=ALF025L5
Storage Element 40:Full :VolumeTag=AEF823LV
Storage Element 41:Full :VolumeTag=ALF036L5
Storage Element 42:Full :VolumeTag=ALF017L5
Storage Element 43:Full :VolumeTag=AEF811LV
Storage Element 44:Full :VolumeTag=AEF810LV
Storage Element 45:Full :VolumeTag=ALF024L5
Storage Element 46:Full :VolumeTag=ALF003L5
Storage Element 47:Full :VolumeTag=ALF032L5
Storage Element 48:Full :VolumeTag=ALF039L5 `;
// 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