const regex = /#Line Address
((?<=
^[0-9a-fA-F]{6}\:
)
|
(?<=
^[0-9a-fA-F]{2}\/[0-9a-fA-F]{4}\:
)
)
#Space
\s+
#Pre-Bytes stuff
.*?
[0-9a-fA-F]+
[\+\-\!\@\*\#\^x\$\s]*
(?(?=
\t
)
(\t)
|
(?(?=
[ ]{2})[ ]{2}|(?=($|\n))))/gm;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('#Line Address
((?<=
^[0-9a-fA-F]{6}\\:
)
|
(?<=
^[0-9a-fA-F]{2}\\\/[0-9a-fA-F]{4}\\:
)
)
#Space
\\s+
#Pre-Bytes stuff
.*?
[0-9a-fA-F]+
[\\+\\-\\!\\@\\*\\#\\^x\\$\\s]*
(?(?=
\\t
)
(\\t)
|
(?(?=
[ ]{2})[ ]{2}|(?=($|\\n))))', 'gm')
const str = `[]
C10000: FFFF FFFF
C10004: FFFF FFFF
C1/0000: FFFF FFFF
C1/0004: FFFF FFFF ;
C1/0008: - FFFF FFFF ADC #
C0/FB6A: - 69 1000 +1 XBA #\$0010
C0/FB6A: -- 6 9 1 0 0 0 ++1 ADC #\$0010
[ffffffffffffffffff
[Initial jump in this bank?]
C1/000C: 204000 JSR \$0040
C1/000F: 6B RTL
[Jumped to by Reset code \$8008]
[RESET_VECTOR]
C1/0010: 5CE54CC1 JMP \$C14CE5 [Jump to Reset 1-1]
[]
C1/0014: 20304C + JSR \$4C30 [Jump to Reset 1-2]
C1/0017: + 6B - RTL
C1/0018: 5CFA4CC1 JMP \$C14CFA
[ffffffffffff`;
// 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