| const regex = /(?:^|\s+)([A-Ea-e][.)]\s+(?:(?!\s+[A-Ea-e][.)]\s+)[\s\S])*)/g; |
| const text = "A) Statement 1 alone B) Statement 2 alone C) Both together D) Either alone E) Neither"; |
| const tempOptions = []; |
| let m2; |
| while ((m2 = regex.exec(text)) !== null) { |
| tempOptions.push({ |
| text: m2[1].trim(), |
| index: m2.index, |
| letter: m2[1].charAt(0).toUpperCase() |
| }); |
| } |
| console.log("tempOptions:", tempOptions); |
|
|
| const startIdx = tempOptions.findIndex((o) => o.letter === 'A'); |
| let validOpts = []; |
| if (startIdx >= 0) { |
| let expectedLetterCode = 65; |
| for (let k = startIdx; k < tempOptions.length; k++) { |
| if (tempOptions[k].letter.charCodeAt(0) === expectedLetterCode) { |
| validOpts.push(tempOptions[k]); |
| expectedLetterCode++; |
| } else { |
| break; |
| } |
| } |
| } |
| console.log("validOpts length:", validOpts.length); |
| if (validOpts.length >= 2) { |
| const options = validOpts.map((o) => o.text); |
| console.log("options:", options); |
| } |
|
|