const regex = /.+? (?<name>.+) \((?<points>\d+) points?\)\n(?:When input is\n(?<input>.*?)\n)?Standard output (?<condition>.+?)\n(?<output>.+)\nEdit\nClone\nRemove\n/s;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('.+? (?<name>.+) \\((?<points>\\d+) points?\\)\\n(?:When input is\\n(?<input>.*?)\\n)?Standard output (?<condition>.+?)\\n(?<output>.+)\\nEdit\\nClone\\nRemove\\n', 's')
const str = `"1. Compare output (2 points)
Standard output exactly matches
Character 'p' is a letter
Character ' ' is a white space
Character '2' is a digit
Character '!' is unknown
Edit
Clone
Remove
----
1. Compare output (2 points)
When input is
xxxtoyxxx
Standard output exactly matches
Midfix: toy
Edit
Clone
Remove`;
// Reset `lastIndex` if this regex is defined globally
// regex.lastIndex = 0;
let m;
if ((m = regex.exec(str)) !== null) {
// 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