Как распарсить переменную в JavaScript?

Поддержка
  • @mik888em

    1. Действие "Выполнить код" выполняет js код в контексте BAS, а не браузера, по этому в нём нет объекта document.

    2. В BAS используется реализация js, которая поддерживает стандарт ECMA-262, в ней нет директивы let

    3. Обрамляя переменную BAS в кавычки вы получите её имя, а не значение

    var str = '[[KOD_VSEY_STRANIZY]]';
    log(str) //VAR_KOD_VSEY_STRANIZY
    
    1. В действии "Выполнить код" нет функции "console.log()", вместо неё используйте функцию "log()"

    Да и чем вас не устроило стандартное действие "Заменить строку"?

    d6efef93-7e4a-4aa0-9742-e2e06c497e14-изображение.png

  • @Fox действием "Заменить строку"

    Пробовал регуляркой удалять вот это
    r1.jpg

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

    /((?<=\*{3}trash2\*{3})[\s\S]+?(?=$|\s\d+\s+(minutes|minute|day|days|weeks|week|hours|hour|years|year|months|month)))|\*{3}trash3\*{3}[\s\S]+?(?=")/g
    

    Другой набор регулярок удаляет сначала первое что выделил красным, вот регулярка:

    /(?<=\*\*\*trash2\*\*\*)\w{3} \w{3}/g
    
    

    к3.jpg
    =-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-=
    вторая регулярка удаляет вот это
    к4.jpg

    код регулярки:

    /\*\*\*trash3\*\*\*[^"]+/g
    

    В джаве скрипта должно норм чиститься.

    пробовал так

    var str = '[[KOD_VSEY_STRANIZY]]';
    log(str) //VAR_KOD_VSEY_STRANIZY
    var result = str
      .replace(/\*\*\*trash3\*\*\*[^"]+/g, '')
      .replace(/(?<=\*\*\*trash2\*\*\*)\w{3} \w{3}/g, '');
    
    log(result);
    
    

    но выдаёт

    [672173537] [01:03:39] Поток №1 : SyntaxError: Invalid regular expression: unrecognized character after (? во время выполнения действия 672173537
    

    Второй код переделал, вот он:

    var str = '[[KOD_VSEY_STRANIZY]]';
    var reg = /((?<=\*{3}trash2\*{3})[\s\S]+?(?=$|\s\d+\s+(minutes|minute|day|days|weeks|week|hours|hour|years|year|months|month)))|\*{3}trash3\*{3}[\s\S]+?(?=")/g;
    str = str.replace(reg, "");
    log(str) //VAR_KOD_VSEY_STRANIZY
    
    

    Так же ошибка:

    [672173537] [01:07:10] Поток №1 : SyntaxError: Invalid regular expression: unrecognized character after (? во время выполнения действия 672173537
    
  • @mik888em Боже мой, откуда вы берёте эти регулярки? Уж не из зенковского ли конструктора?

    Скиньте изначальный текст и то, что из него нужно удалить

  • @mik888em а зачем вообще использовать код, когда есть кубик для этого?2021-07-29_050815.png

  • @mik888em said in Как распарсить переменную в JavaScript?:

    В джаве скрипта должно норм чиститься.
    пробовал так
    var str = '[[KOD_VSEY_STRANIZY]]';
    log(str) //VAR_KOD_VSEY_STRANIZY
    var result = str
    .replace(/***trash3***[^"]+/g, '')
    .replace(/(?<=***trash2***)\w{3} \w{3}/g, '');

    log(result);

    Вас не смутило, то что в переменной str у вас текст "VAR_KOD_VSEY_STRANIZY" ?

    но выдаёт
    [672173537] [01:03:39] Поток №1 : SyntaxError: Invalid regular expression: unrecognized character after (? во время выполнения действия 672173537

    Попробуйте не использовать назад смотрящее утверждение

  • @Fox Текст такой

    random text 1***trash2***y6f dhy 1 month ago 14 minutes, 29 seconds 3,620 name***trash3***random text 1","random text 2***trash2***pot 5aq 3 months ago 9 minutes, 9 seconds 226,629 name***trash3***random text 2","random text 3***trash2***uan 4fp 5 months ago 26 minutes 506,950 name***trash3***random text 3"
    
    

    из него нужно удалить то что выделил желтым и синим
    we.jpg

  • @UserTrue said in Как распарсить переменную в JavaScript?:

    @mik888em а зачем вообще использовать код, когда есть кубик для этого?2021-07-29_050815.png

    те же регулярки в кубике "заменить строку", не удаляют ни одного символа из текста, хотя JSкод написан верно.

  • @mik888em said in Как распарсить переменную в JavaScript?:

    те же регулярки в кубике "заменить строку", не удаляют ни одного символа из текста, хотя JSкод написан верно.

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

  • @UserTrue

    Первая регулярка не удаляет,

    /\*\*\*trash3\*\*\*[^"]+/g
    

    и вторая не удаляет.

    /(?<=\*\*\*trash2\*\*\*)\w{3} \w{3}/g
    

    Но в JS-скрипте должны удалять. Но проблема, что изначально в теме мною была опиисана - это то, что регулярки верные, но сам BAS спотыкается при начале работе JS-кода внутри которых эти регулярки лежат.

    Регулярки писал не я, поэтому в каком конструкторе писались я не знаю.

  • @mik888em в кубики надо писать просто

    \*\*\*trash3\*\*\*[^"]+
    

    там же есть примеры

    Если сильно нужны флаги, то вот пример

    (?i)(?<![a-z])word(?![a-z])
    
  • @Fox пытался целый день в https://bablosoft.github.io/RegexpConstructor написать , но не получилось. Хотя до этого долго им пользовался и писал регулярки под самые разные проекты.

    А эти регулярки попросил подсказать, поэтому их писал не я, и в каком конструкторе они написаны - я этого незнаю. Но в JS-коде. они работают. Проверял вот там где подсказали https://is.gd/tZXw4u

  • @mik888em said in Как распарсить переменную в JavaScript?:

    @Fox пытался целый день в https://bablosoft.github.io/RegexpConstructor написать , но не получилось. Хотя до этого долго им пользовался и писал регулярки под самые разные проекты.

    А эти регулярки попросил подсказать, поэтому их писал не я, и в каком конструкторе они написаны - я этого незнаю. Но в JS-коде. они работают. Проверял вот там где подсказали https://is.gd/tZXw4u

    1999.xml

  • @Fox Регулярка

    (?<=\*\*\*trash2\*\*\*)\w{3} \w{3}
    

    удаляет только 3 символа, там не так всё просто)

    ц2.jpg

    Трудность как раз в том что регулярка должна удалять что идёт между *** trash2*** и цифрой пробел и временным названием . Типа 2 year, 27 years, 1 day, 6 days... и так далее.

    Иными словами, синее - это то что между ***trash2 *** и любое из этих значений:
    {цифра} minutes
    {цифра} minute
    {цифра} day
    {цифра} days
    {цифра} weeks
    {цифра} week
    {цифра} hours
    {цифра} hour
    {цифра} years
    {цифра} year
    {цифра} months
    {цифра} month

    А вот эта регулярка только в JS-коде это делает хорошо:

    /((?<=\*{3}trash2\*{3})[\s\S]+?(?=$|\s\d+\s+(minutes|minute|day|days|weeks|week|hours|hour|years|year|months|month)))|\*{3}trash3\*{3}[\s\S]+?(?=")/g;
    
  • @mik888em said in Как распарсить переменную в JavaScript?:

    А вот эта регулярка только в JS-коде это делает хорошо:

    Она и в кубике работает хорошо, я же написал, что надо убрать в начале - "/" и в конце - "/g"

  • @mik888em said in Как распарсить переменную в JavaScript?:

    /((?<=*{3}trash2*{3})[\s\S]+?(?=$|\s\d+\s+(minutes|minute|day|days|weeks|week|hours|hour|years|year|months|month)))|*{3}trash3*{3}[\s\S]+?(?=")/g;

    😁 хороша