Нужно распарсить html-документ и найти все начальные теги <div>, которые содержат определенное слово, но при этом исключить строки содержащие слово исключения.
Проблема в том, что слово исключения может находится как слева, так и справа от слова поиска. А кроме этого нужно выделить подстроку из всего текста.
Я просмотрел много различных решений, но все они имеют более легкую задачу - без выделения подстрок из многострочного текста.
Как пример:
<div свойство1="значение1" свойство2="значение2" свойство3="значение3">
<div свойство2="значение2" свойство1="значение1" свойство3="значение3">
<div свойство3="значение3" свойство1="значение1">
<div свойство1="значение1" свойство3="значение3">что-то еще</div></div></div>/div>
Нужно выбрать все содержащие слово "свойство1" и не содержащие "свойство2".
Результат должен быть таким:
<div свойство3="значение3" свойство1="значение1">
<div свойство1="значение1" свойство3="значение3">
Возможно ли это сделать одним регулярным выражением или только двумя?
Т.е. за два шага, сначала выбрать все строки с входящим словом, а потом исключить с исключающим словом.
const htmlStr = `
<div свойство1="значение1" свойство2="значение2" свойство3="значение3">
<div свойство2="значение2" свойство1="значение1" свойство3="значение3">
<div свойство3="значение3" свойство1="значение1">
<div свойство1="значение1" свойство3="значение3">что-то еще</div></div></div>/div>
`;
const dom = document.createElement('html');
dom.innerHTML = htmlStr;
const res = dom.querySelectorAll('[свойство1]:not([свойство2])')
console.log([...res]);
const openTags = [...res].map(el => el.outerHTML.split('>')[0]+'>');
console.log(openTags);
const text = `<div свойство1="значение1" свойство2="значение2" свойство3="значение3">
<div свойство2="значение2" свойство1="значение1" свойство3="значение3">
<div свойство3="значение3" свойство1="значение1">
<div свойство1="значение1" свойство3="значение3">что-то еще</div></div></div>/div>`;
const match = text.match(/<((?!свойство2).)*?(свойство1)((?!свойство2).)*?>/g);
console.log(match);
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
В классических ролевых играх есть 3 стандартных класса: Воин (Warrior), Маг (Mage), Вор (Rogue)Для каждого из классов важен определённый атрибут: для...
Вопрос вызван проблемой, которая больше не воспроизводится, или опечаткойХотя похожие вопросы могут быть уместны на этом сайте, решение...
У меня есть шаблонная функция, которая принимает на вход параметры Args
Нужно посчитать XOR-ы всех чисел на заданном отрезкеОперация xor мне знакома, но я не знаю как посчитать xor-ы всех чисел