Nodejs readFileSyn c тег регулярного выражения между двумя строками - PullRequest
0 голосов
/ 16 апреля 2020

Я пытаюсь извлечь содержимое файла с помощью функции nodejs fs.readFileSync() в строку следующим образом:

let fileData = fs.readFileSync('./path, 'utf8');

, после этого я хочу получить содержимое между двумя строками через regex :

У меня есть строка примерно такая:

<route-meta>
    {
        "requiresAuth": true
    }
</route-meta>

<template>

</template>

<script>
    export default {
        name: "check"
    }
</script>

<style scoped>

</style>

Мне нужно найти текст / строку между <route-meta> и </route-meta>, чтобы результат был:

{
   "requiresAuth": true
}

Я пытался сделать это с fileData.match(/<route-meta>(.*?)<\/route-meta>/);, но каким-то образом это дает мне null результат

Я следовал этому примеру: Текст соответствия регулярных выражений между тегами

Также я пытался проверить fileData.replace('route-meta', '');, но все равно он не дает мне желаемого результата, я имею в виду, что я не могу выполнять какие-либо строковые операции с fileData.

Укажите, где я делаю ошибку .

1 Ответ

1 голос
/ 16 апреля 2020

Пожалуйста, не используйте regex для XML анализа

Но чтобы ответить на ваш вопрос, вы можете попробовать это

let re = /<route-meta>[\s\S]*?<\/route-meta>/
let re1 = /<(\/*)route-meta>/gi
let newstr = fileData.match(re)[0].replace(re1,"")
console.log(newstr)

re находит полный набор тегов с контентом, используя match re1 удаляет открывающий и закрывающий тег, используя replace

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...