const regex = /(?<_filename_>.*?):(?<line>\d+)(?:[:](?<column>\d+)(?:[:](?<endLine>\d+):(?<endColumn>\d+))?)?: (?<type>\w+): (?<message>.*)\r?(\n|$)/gm;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('(?<_filename_>.*?):(?<line>\\d+)(?:[:](?<column>\\d+)(?:[:](?<endLine>\\d+):(?<endColumn>\\d+))?)?: (?<type>\\w+): (?<message>.*)\\r?(\\n|$)', 'gm')
const str = `# --show-error-end
src/waybar_check_gmail/config/config.py:19:17:19:17: error: Dict entry 0 has incompatible type "str": "None"; expected "str": "str" [dict-item]
src/waybar_check_gmail/config/config.py:20:17:20:17: error: Dict entry 1 has incompatible type "str": "None"; expected "str": "str" [dict-item]
src/waybar_check_gmail/config/config.py:21:17:21:17: error: Dict entry 2 has incompatible type "str": "None"; expected "str": "str" [dict-item]
src/waybar_check_gmail/config/config.py:26:17:26:17: error: Dict entry 1 has incompatible type "str": "bool"; expected "str": "str" [dict-item]
src/waybar_check_gmail/config/config.py:27:17:27:17: error: Dict entry 2 has incompatible type "str": "bool"; expected "str": "str" [dict-item]
src/waybar_check_gmail/config/config.py:28:17:28:17: error: Dict entry 3 has incompatible type "str": "bool"; expected "str": "str" [dict-item]
src/waybar_check_gmail/config/config.py:29:17:29:17: error: Dict entry 4 has incompatible type "str": "None"; expected "str": "str" [dict-item]
src/waybar_check_gmail/config/config.py:30:17:30:17: error: Dict entry 5 has incompatible type "str": "bool"; expected "str": "str" [dict-item]
# WITHOUT --show-error-end, ONLY: --show-column-numbers
[info] src/waybar_check_gmail/config/config.py:19:17: error: Dict entry 0 has incompatible type "str": "None"; expected "str": "str" [dict-item]
src/waybar_check_gmail/config/config.py:20:17: error: Dict entry 1 has incompatible type "str": "None"; expected "str": "str" [dict-item]
src/waybar_check_gmail/config/config.py:21:17: error: Dict entry 2 has incompatible type "str": "None"; expected "str": "str" [dict-item]
src/waybar_check_gmail/config/config.py:26:17: error: Dict entry 1 has incompatible type "str": "bool"; expected "str": "str" [dict-item]`;
// 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