Как получить строку между двумя тегами

#regex #string

#регулярное выражение #строка

Вопрос:

Я хотел бы получить demo объект из строкового файла:

Но, похоже, что мое регулярное выражение неверно: (demo: [)(.*)(],)

 sayHello(() => ({
    foo: eeeeeeeeeeeeee,
    demo: [
        {
            name: 'abcd', 
        },
        {
            name: 'qqqq', 
        },
    ],
}));
  

Ожидаемый результат:

 [
        {
            name: 'abcd', 
        },
        {
            name: 'qqqq', 
        },
]
  

Комментарии:

1. Кажется, вы пытаетесь проанализировать JS-файл — это может быть очень сложно и почти невозможно, если вы не абсолютно уверены , что ] внутри этого объекта не может быть, например, в другом месте. Вам также нужно знать, что оно .* не соответствует новым строкам, для этого вам нужно использовать [sS]* . Если вы не можете быть уверены, я бы рекомендовал использовать синтаксический анализатор, такой как acorn, чтобы фактически семантически проанализировать файл как JavaScript.

2. Это была ошибка, я отредактировал через несколько секунд

3. regex101.com/r/g0iheb/1 — Это сработает, только если demo: object не содержит в себе вложенных объектов. Если у вас разные тестовые примеры, пожалуйста, сообщите нам об этом.