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



  • @Fox Конечный результат должен быть такой
    Регулярное выражение

    \#http://site\.ru/(.*)/(.*)/\|(.*)\ (.*)\|@(.*)@: - #http://site.ru/profile/stein_sv/|Станислав Гудзенко|@ 8 January@:;
    Заменить на
    \1-\2-\3-\4-\5 -  в итоге должно быть так profile/stein_sv-Станислав Гудзенко- 8 January
    

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

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



  • @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*/')); // тут скобки не хватало, может поэтому.

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


Log in to reply
 

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