Помогите с регуляркой



  • @Fox said in Помогите с регуляркой:

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

    Заменить содержимое в строке из списка? Или у вас просто строка с переносом строки?

    да я сделал сперва из списка в строку потом в строке сделал перенос строки для применения регулярных выражений так как по другому вроде для списка регулярки применить не возможно для списка придется использовать for а это долго может я ошибаюсь но у меня не получалось с помощью регулярок заменить текст на всех строках в списке



  • @Fox said in Помогите с регуляркой:

    Не получается сортировать список

    Это главная проблема?

    Главная проблема не получается применить регулярку в notepad++ работает регулярка без проблем а в bas на полученный список из сайта не работает а если список полученный из сайта скопировать в ручную и обратно поставить на переменную или в шаблон то работает регулярка



  • @Fox said in Помогите с регуляркой:

    Получил каждый текст с сайта с помощью xpath
    Полученный список объединил в строку без разделителя в полученном тексте был разделитель ";" с помощью "Разделить строку" разделил отдельно по строкам

    А зачем?

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



  • @GamiD Ух ну и огород..

    Регулярки разные будут потому строки разные в одной строке нет возраста в другом города а в некоторых даже даты

    Регулярку проще сделать универсальную, чтобы всё забирало и сразу.

    чтобы в дальнейшем фильтровать через excel нужно ставить разделители "-" если даже нет даты или возраста

    Разделитель для excel лучше использовать \t - обозначает символ табуляции.

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

    Для применения регулярки к списку, можно использовать функцию:

    [[NEW_LIST]] = [[PIC_URL_TO_DOWNLOAD]].map(function(el){
        return el.replace(/\\/g, "/")
    })
    

    для списка придется использовать for а это долго

    Долго только в режиме записи, при запуске всё происходит мгновенно.

    Главная проблема не получается применить регулярку в notepad++ работает регулярка без проблем а в bas на полученный список из сайта не работает а если список полученный из сайта скопировать в ручную и обратно поставить на переменную или в шаблон то работает регулярка

    Очень рад за notepad++, но ваша регулярка:

    \#http://site\.ru/(.*)/(.*)/\|(.*)\ (.*)\|@(.*)@:
    

    это жесть :D, ещё раз говорю, проще и быстрее было скинуть проект, чем расписывать всё по пунктам.

    Полученный список объединил в строку без разделителя в полученном тексте был разделитель ";" с помощью "Разделить строку" разделил отдельно по строкам

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

    Ну по факту, вы взяли список, перевели его в строку, а потом обратно в список, это всё ненужные телодвижения.



  • @Fox

    вот сам проект вывод должен быть такой
    в результат должен выйти вот такой список

    rick-Rick-Foreveryoung-44 года-Москва, Россия-14 января
    bobo-Dmitrii-Kornilov-41 год-Новая Зеландия-
    e_gosha-Игорь-Семендяев-Липецк, Липецкая обл., Россия-25.12.2017-
    digit-Vladimir-Yakushin-52 года- 3 февраля-
    krasinsky-Igor-Krasinsky-47 лет-Украина-
    illy-Илья-Гургуцов---
    greygoose-Grey-Goose-47 лет-Пушкино, Московская обл., Россия-
    falc-Игорь-Соколов-51 год-Москва, Россия-06.07.2017
    maratgal-Марат-Галимарданов-46 лет-Ноябрьск, Ямало-Ненецкий АО, Россия-12 января
    palegen-Леонид-Паньшин-55 лет-Рефтинский, Свердловская обл., Россия-вчера
    dimulka-Дмитрий-Болышев-44 года-Москва, Россия-вчера
    alsok-Alexandеr-Sokolov-48 лет-Израиль-05.06.2017
    budkin-Сергей-Будкин-42 года-Санкт-Петербург, Россия-23.12.2017
    mactep-D-G-41 год-Израиль-15.05.2017
    irisha02-Ирина-Липатникова-40 лет-24.08.2017-
    kodmant-Дмитрий-К.-37 лет-Самара, Самарская обл., Россия-23 января
    b_a_w-Антон-Бузанов-37 лет-Москва, Россия-29.10.2017
    kluj-Евгений-Клюжев-41 год-Иркутск, Иркутская обл., Россия-28.10.2017
    pavlik_-Андрей-Морозов-44 года-Магнитогорск, Челябинская обл., Россия-11.05.2017
    irakl-Irina-L.---
    
    

    я этот список сделал с помощью notepad++ с такими регулировками

    http://site\.ru/profile/(.*)/\|(.*)\ (.*)\|\((.*)\)@(.*)@
    http://site\.ru/profile/(.*)/\|(.*)\ (.*)\|\((.*)\ \|\ (.*)\)$
    http://site\.ru/profile/(.*)/\|(.*)\ (.*)\|$
    все это заменял на 
    \1-\2-\3-\4-\5-\6
    по очереди
    

    но в bas Не работает почему та



  • @Fox said in Помогите с регуляркой:

    Регулярку проще сделать универсальную, чтобы всё забирало и сразу.

    каким образом делается?



  • @Fox said in Помогите с регуляркой:

    Для применения регулярки к списку, можно использовать функцию:
    [[NEW_LIST]] = [[PIC_URL_TO_DOWNLOAD]].map(function(el){
    return el.replace(/\/g, "/")
    })

    спасибо большое помог получилось сделать еще один вопрос

    @Fox said in Помогите с регуляркой:

    Регулярку проще сделать универсальную, чтобы всё забирало и сразу.

    каким образом делается универсальная?



  • @GamiD

    вот сам проект

    Где проект?

    я этот список сделал с помощью notepad++ с такими регулировками
    но в bas Не работает почему та

    Основная причина, почему регулярка где то работает, а в BAS не работает, в разном виде данных в BAS'e, строка, массив, объект..
    Даже строка с переносом строки уже может не дать нужный результат:
    0_1518278141842_forum1.png
    Регулярка верная, поиск цифр с жадным алгоритмом по идее должен взять все цифры, но нет. Перенос строки берёт только \s - пробел.
    0_1518278454415_forum2.png



  • @Fox я удалил потому что получилось сделать спасибо еще раз за совет



  • @Fox
    как сделать чтоб из списка выводил текст под регулярное выражение? ты делал чтоб удалял из списка и очень помог этим а вот как выводить не знаю на басе ничего не выводить из списка только если полностью знаешь строку можно вывести

    эти коды если добавить в тему Лайфхаки многим людям помогут

    пробовал с "Первое вхождение" из списка не выводить

    Вот так делал

    [[PER3]] = [[TEST_NOMER_AVTOSMS]].map(function(el){
        return el.match( /.*777.*/i );
    })
    

    из списка выводит но еще выводит в переменную все строки только в других написано null

    2_1518374255915_3.JPG 1_1518374255913_2.JPG 0_1518374255908_1.JPG



  • @GamiD Тут наверное проще так. Функция map для модификации... И регулярку поправил.

    var arrIn=[[TEST_NOMER_AVTOSMS]];
    var arrOut=[];
    arrIn.forEach(function(str,i, arrIn) {
    str=str.match(/777\d*/);
    if (str){arrOut.push(str[0])};
    });
    [[PER3]] =arrOut;


  • @Denis_krsk Спасибо но не выводить если в регулярку поставить переменную

    var arrIn=[[TEST_NOMER_AVTOSMS]];
    var arrOut=[];
    arrIn.forEach(function(str,i, arrIn) {
    str=str.match(/[[USER_NOMER_AVTOSMS]]:\d*/);
    if (str){arrOut.push(str[0])};
    });
    [[JOIN_RESULT_STRING]] =arrOut;
    

    и можно сразу в строку вывести а не в список?



  • var arrIn=[[TEST_NOMER_AVTOSMS]];
    var arrOut=[];
    arrIn.forEach(function(str,i, arrIn) {
    str=str.match(/[[USER_NOMER_AVTOSMS]]:\d*/);
    if (str){arrOut.push(str[0])};
    });
    [[JOIN_RESULT_STRING]] =arrOut.join(',');



  • @Denis_krsk с переменным не работает

    так не работает 
    var arrIn=[[TEST_NOMER_AVTOSMS]];
    var arrOut=[];
    arrIn.forEach(function(str,i, arrIn) {
    str=str.match(/[[USER_NOMER_AVTOSMS]]:\d*/);
    if (str){arrOut.push(str[0])};
    });
    [[JOIN_RESULT_STRING]] =arrOut.join(',');
    
    а так работает но в переменной [[USER_NOMER_AVTOSMS]] только текст 77775985769
    var arrIn=[[TEST_NOMER_AVTOSMS]];
    var arrOut=[];
    arrIn.forEach(function(str,i, arrIn) {
    str=str.match(/77775985769:\d*/);
    if (str){arrOut.push(str[0])};
    });
    [[JOIN_RESULT_STRING]] =arrOut.join(',');
    


  • @GamiD попробуй str=str.match(eval('/'+[[USER_NOMER_AVTOSMS]]+':\d*/');



  • @Denis_krsk нет не получается



  • @GamiD str=str.match(eval('/'+[[USER_NOMER_AVTOSMS]]+':\d*/')); // тут скобки не хватало, может поэтому.



  • @Denis_krsk вот так заработал

    str=str.match(eval('/'+[[USER_NOMER_AVTOSMS]]+':[0-9]*/'));
    

    от души братан четко работает



  • @Denis_krsk said in Помогите с регуляркой:

    @GamiD str=str.match(eval('/'+[[USER_NOMER_AVTOSMS]]+':\d*/')); // тут скобки не хватало, может поэтому.

    думаю если поставить эти коды в лайфхаки многим понадобятся



  • @GamiD Да это основы js, я сам его не знаю, но стараюсь читать когда есть время либо необходимость.


Log in to reply
 

Looks like your connection to Bablosoft was lost, please wait while we try to reconnect.