@Quqas

Как заменить/удалить весь текст в скобках по ключевому слову?

Пример:

некий текст до скобок (произвольный заранее неизвестный текст, возможно содержащий ссылки. но в нём есть "ключевое" слово) текст после скобок, а может и нет его


надо получить:
некий текст до скобок  текст после скобок, а может и нет его

или
некий текст до скобок а тут замена текст после скобок, а может и нет его


нашёл скрипт
// ==UserScript==
// @name         New Userscript
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        *://*/*

// @grant        none
// ==/UserScript==

window.addEventListener('load', function() {
    'use strict';
    // create a TreeWalker of all text nodes
var allTextNodes = document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT),
 
    text011 = /другая известная фраза с ключевым словом/g,
    text012 = /заранее известная фраза с ключевым словом/g,

*/*/*/*//*/*/*/*/*/*//*//*/*/

    replaceValue = "замена",

    ClearText = "";


while (allTextNodes.nextNode()) {

   replaceNodeText(allTextNodes.currentNode, text011, replaceValue);
   replaceNodeText(allTextNodes.currentNode, text012, ClearText);

*/*/*/*/*/*/*//*/*/*/

}
function replaceNodeText(node, search, replaceText) {
node.nodeValue = node.nodeValue.replace(search, replaceText);
}

}, false);


но в данном случае необходимо ПОЛНОСТЬЮ указать всю строку которую найдут и будут менять. А если заранее не известно?

т.е. либо переменные text011, text012 надо как- хитро задавать, либо саму функцию замены как-то переделать чтобы всё до скобок включительно чистило. первый вариант предпочтительней.

т.е. в идеале text011 = ???????? ключев ??????????????
ключев потому-что слово может быть ключевое, ключевая ключевые , ключевому и т.д.

весь вопрос что вместо???прописать?

ну или другие подходы тоже рассматриваются
  • Вопрос задан
  • 258 просмотров
Решения вопроса 1
@Quqas Автор вопроса
тем не менее я смог прикрутить к существующему, с целью минимизации переделок

вместо
text011 = /другая известная фраза с ключевым словом/g,

заработало как хотел в вопросеtext011 = RegExp(`\\(.*ключев.*\\)`),

честно признаюсь я до сих пор не понимаю зачем там например точки, но в первом приближении работает как задумывалось

следующий "скачок" научится удалять по ключевым словам отдельные предложения. которые сами по себе но не в скобках.
придумать алгоритм который определяет предложение - предложением пока не смог
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
0xD34F
@0xD34F Куратор тега JavaScript
str.replace(RegExp(`\\(.*${word}.*\\)`), '')
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы