Помогите с регуляркой
-
Не получается сортировать список уже несколько часов мучаюсь с эти в notepad++ все работает без проблем а вот в base проблема
Получил каждый текст с сайта с помощью xpath
Полученный список объединил в строку без разделителя в полученном тексте был разделитель ";" с помощью "Разделить строку" разделил отдельно по строкам
теперь нужно в каждой строке заменить содержимое с помощью регулярки(регулярки будут разные чтоб под каждую строку совпадали внизу который я написал должен совпадать с первой строкой)
если скопировать полученный с сайта текст который в "Инспектор переменных" и поставить в шаблон или в переменную то работает регулярка а на прямую с сайта полученных данных нетРегулярки делал сам и в конструкторе и то и другое работает в notepad++
\#http://site\.ru/(.*)/(.*)/\|(.*)\ (.*)\|@(.*)@: \1-\2-\3-\4-\5
#http://site.ru/profile/stein_sv/|Станислав Гудзенко|@ 8 January@:; #http://site.ru/profile/gulmira0280/|Гульмира Гульмира|(38 years | Алма-Ата, Казахстан):; #http://site.ru/profile/alexeiv/|Алексей Вратциди|(Мюнхен, Германия)@31 January@:; #http://site.ru/profile/vadim1975/|Вадим Корабельников|(Алма-Ата, Казахстан)@25 January@:; #http://site.ru/profile/abilov1977/|Талгат Талгат|(40 years)@ 2 February@:; #http://site.ru/profile/karma_777/|Татьяна Павлова|(Волгодонск, Ростовская обл., Россия)@31 January@:; #http://site.ru/profile/ernursat/|Ернур Сатыбалдин|(57 years | Алма-Ата, Казахстан)@ 8 January@:; #http://site.ru/profile/kazbus/|Казбек Тунгатбаев|(48 years | Алма-Ата, Казахстан)@ 2 February@:; #http://site.ru/profile/nurkadam/|Nurkadam Kerimkulov|(37 years | Астана, Казахстан)@ 5 February@:; #http://site.ru/profile/happy2003/|Aisulu Kasimova|(40 years)@ 7 January@:; #http://site.ru/profile/rimski_h/|***РИММА ***|(35 years):; #http://site.ru/profile/salma81/|Salma Turman|(37 years):; #http://site.ru/profile/natali2602777/|Natalia Sagaidakova|(34 years)@25.08.2017@:; #http://site.ru/profile/dimazubkov/|Дмитрий Зубков|(43 years | Ганновер, Германия)@ 6 January@:; #http://site.ru/profile/www.max/|Максим Спиваченко|(32 years | Астана, Казахстан)@ 7 January@:; #http://site.ru/profile/a-zhubanazarov/|ахмет жубаназаров|(56 years)@ 6 February@:; #http://site.ru/profile/jildiz22/|jildiz ahmedova|(37 years | Бишкек, Киргизия (Кыргызстан))@30.04.2017@:; #http://site.ru/profile/saule1965/|JGS 807|(52 years)@30 January@:; #http://site.ru/profile/shegai2003/|Александр Шегай|@12.09.2017@:; #http://site.ru/profile/vilora/|Valery Kovzelev|(Хайфа, Израиль)@30.12.2017@:;
В чем может быть проблема?
-
@GamiD Пока я пытаюсь вникнуть в то что здесь написано, залейте скрипт с минимальным количеством действий.
-
Не получается сортировать список
Это главная проблема?
Получил каждый текст с сайта с помощью xpath
Полученный список объединил в строку без разделителя в полученном тексте был разделитель ";" с помощью "Разделить строку" разделил отдельно по строкамА зачем?
теперь нужно в каждой строке заменить содержимое с помощью регулярки
Заменить содержимое в строке из списка? Или у вас просто строка с переносом строки?
регулярки будут разные чтоб под каждую строку совпадали
Под каждую строку отдельную регулярку?
#http://site.ru/profile/stein_sv/|Станислав Гудзенко|@ 8 January@:;
Это необходимый, конечный результат?
-
@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
, ещё раз говорю, проще и быстрее было скинуть проект, чем расписывать всё по пунктам.Полученный список объединил в строку без разделителя в полученном тексте был разделитель ";" с помощью "Разделить строку" разделил отдельно по строкам
что зачем? я не использую запятую как разделитель потому что в самом строке тоже есть запятые
Ну по факту, вы взяли список, перевели его в строку, а потом обратно в список, это всё ненужные телодвижения.
-
вот сам проект вывод должен быть такой
в результат должен выйти вот такой список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 Помогите с регуляркой:
Регулярку проще сделать универсальную, чтобы всё забирало и сразу.
каким образом делается универсальная?
-
вот сам проект
Где проект?
я этот список сделал с помощью notepad++ с такими регулировками
но в bas Не работает почему таОсновная причина, почему регулярка где то работает, а в BAS не работает, в разном виде данных в BAS'e, строка, массив, объект..
Даже строка с переносом строки уже может не дать нужный результат:
Регулярка верная, поиск цифр с жадным алгоритмом по идее должен взять все цифры, но нет. Перенос строки берёт только \s - пробел.
-
@Fox я удалил потому что получилось сделать спасибо еще раз за совет
-
@Fox
как сделать чтоб из списка выводил текст под регулярное выражение? ты делал чтоб удалял из списка и очень помог этим а вот как выводить не знаю на басе ничего не выводить из списка только если полностью знаешь строку можно вывестиэти коды если добавить в тему Лайфхаки многим людям помогут
пробовал с "Первое вхождение" из списка не выводить
Вот так делал
[[PER3]] = [[TEST_NOMER_AVTOSMS]].map(function(el){ return el.match( /.*777.*/i ); })
из списка выводит но еще выводит в переменную все строки только в других написано null
-
@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*/')); // тут скобки не хватало, может поэтому.