const regex = /(warning|error|note|help)(?:\[(.*)\])?\: (.*)\s+--> (.*):(\d+):(\d+)\n(?:((?:.+\n)+)\.+)?(?:[\d\s]+\|.*)*((?:\s+=.*)+)?/g;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('(warning|error|note|help)(?:\\[(.*)\\])?\\: (.*)\\s+--> (.*):(\\d+):(\\d+)\\n(?:((?:.+\\n)+)\\.+)?(?:[\\d\\s]+\\|.*)*((?:\\s+=.*)+)?', 'g')
const str = `Compiling sample v0.1.0 (file:///home/sample/src/sample.rs)
error: cannot borrow immutable local variable \`buffer\` as mutable
--> src/sample.rs:29:32
|
26 | let buffer = String::new();
| ------ use \`mut buffer\` here to make mutable
...
29 | while ifile.read_line(&mut buffer).unwrap() > 0 {
| ^^^^^^ cannot borrow mutably
error: cannot borrow immutable local variable \`buffer\` as mutable
--> src/sample.rs:39:9
|
26 | let buffer = String::new();
| ------ use \`mut buffer\` here to make mutable
...
39 | buffer.clear();
| ^^^^^^ cannot borrow mutably
error[E0384]: re-assignment of immutable variable \`buffer\`
--> src/sample.rs:30:9
|
26 | let buffer = String::new();
| ------ first assignment to \`buffer\`
...
30 | buffer = buffer.replace("\\n", "");
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ re-assignment of immutable variable
error: aborting due to 3 previous errors
error: Could not compile \`sample\`.
To learn more, run the command again with --verbose.`;
// 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