Я создаю базу данных вопросов, и я создал базу данных, разбив строку на массив строк меньшего размера, где каждая является вопросом и его ответом. Например, строка, которую я имею, выглядит как
var string = "(1) foo? ANSWER: fee (2) fah. ANSWER: feh"
То, как я разбиваю строку на массив, выглядит следующим образом: .match
:
const arr = string
.match(/\(\d+[^(]+/g)
});
Регулярное выражение в .match
разбивает большую строку вопросов на массив строк. Как и сейчас, совпадение начинается с открывающей круглой скобки номера вопроса и соответствует всему до следующей открывающей скобки, которая является началом номера следующего вопроса. Таким образом, результирующий массив выглядит как
["(1) foo? ANSWER: fee", "(2) fah. ANSWER: feh"]
Это прекрасно работает, за исключением случаев, когда сам вопрос имеет круглые скобки:
var string = "(1) foo foo (faa) foo? ANSWER: fee (2) fah. ANSWER: fah"
Функция .match в этом случае разделяет на (в (faa, который выбрасывает массив. Как я могу изменить выражение регулярного выражения так, чтобы оно совпадало с открывающими скобками, за которыми следовало бесконечное количество символов, не являющихся скобками, но совпадало с круглыми скобками, если за ним следует не git символ?