В настоящее время я пытаюсь реализовать интерполяцию строк для моего языка.
Интерполяция строк выглядит примерно так:
let x = " Baby"
let message = "Hello $(x)"
Мое текущее регулярное выражение для захвата интерполированного выражения:
const regex = /[$][(].*?[)]/g;
Однако приведенное выше регулярное выражение хорошо работает с выражениями без скобок, но не работает должным образом, когда интерполированное выражение имеет квадратные скобки, например:
let message = "My number is $(square(1+2))"
// the captured group would be `$(square(1+2)` , which is missing a bracket
Я не мог использовать жадные квантификаторы. Если нет, он не будет работать, если имеется более одного интерполированного выражения, например:
let message = "My number is $(x) $(y) $(z)"
// if capture greedily, it would be `$(x) $(y) $(z)`, which is not desired
Как жадно захватывать интерполированные выражения, основанные на ситуациях?
Примечание. Я ищу ответ в JavaScript.