Мне нужно регулярное выражение для замены пробелов подчеркиванием в некоторых указанных c json значениях ключей.
Я использую gulp-replace, чтобы сделать бит замены. Это мой вайп:
const method1 = /(?<=title": ")(\s+)(?=",)/g; // not working
const method2 = /(?:\G(?!^)|title": ")[^" ]*\K[ ]/g; // works in regex101.com but not when run as part of the gulp replace task below
gulp.task('spaceReplace', function () {
return gulp
.src(['src/data/data.json'])
.pipe(replace(method2, '_'))
.pipe(gulp.dest('src/data/output/'));
});
Ввод (json файл данных):
{
"stories": {
"story1_category": "",
"story1_title": "Blue Monday",
"story1_link": "",
"story2_category": "",
"story2_title": "The Meaning Of Life",
"story2_link": "",
"story3_category": "",
"story3_title": "Blind Mans Bluff",
"story3_link": "",
"story4_category": "",
"story4_title": "The Art Of Fly-Fishing",
"story4_link": "",
"story5_category": "",
"story5_title": "King Of The Hill"
}
}
Желаемый вывод:
{
"stories": {
"story1_category": "",
"story1_title": "Blue_Monday",
"story1_link": "",
"story2_category": "",
"story2_title": "The_Meaning_Of_Life",
"story2_link": "",
"story3_category": "",
"story3_title": "Blind_Mans_Bluff",
"story3_link": "",
"story4_category": "",
"story4_title": "The_Art_Of_Fly-Fishing",
"story4_link": "",
"story5_category": "",
"story5_title": "King_Of_The_Hill"
}
}
Я попытался с помощью выражения найти соответствие для каждого узла и выбрать целое значение, которое работает:
(?<=title": ")(.*?)(?=",)
Затем я попробую следующее обновление - идея состоит в том, что я заменяю часть на 'match all с выражением, которое ищет совпадения только с пробелами в этом значении:
(?<=title": ")(\s+)(?=",)
Но это не работает. Почему вышеописанное не работает?
Я также попробовал другой метод, основанный на this
(?:\G(?!^)|title": ")[^" ]*\K[ ]
Это соответствует желаемым параметрам при тестировании с https://regex101.com/, но не совпадает при тестировании в https://regexr.com/ и также не работает, когда я пытаюсь использовать его в качестве моего method1
регулярного выражения в моей задаче gulp
Почему вышеописанное также не работает? И что такое решение, которое будет работать, чтобы соответствовать пробелам в каждом значении заголовка в дереве json?