Как полученные результаты regex вывести в 1 строку

Valiksim

Client
Регистрация
14.04.2012
Сообщения
1 344
Благодарностей
298
Баллы
83
Есть регулярное выражение, при помощи которого собираю 2 показателя
- ссылку
- текст ссылки

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

Сейчас записывается как:

http://tratata.com
Наша ссылка хороша


А нужно записать данные вот в таком виде:
http://tratata.com:Наша ссылка хороша
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 416
Благодарностей
9 119
Баллы
113
Есть регулярное выражение, при помощи которого собираю 2 показателя
- ссылку
- текст ссылки

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

Сейчас записывается как:

http://tratata.com
Наша ссылка хороша


А нужно записать данные вот в таком виде:
http://tratata.com:Наша ссылка хороша
если результат работы регулярки кладется в список, то можно объединить этот список в переменную, используя разделитель ":"

upload_2015-5-14_3-11-9.png

upload_2015-5-14_3-14-14.png
 
Последнее редактирование:
  • Спасибо
Реакции: Valiksim

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 416
Благодарностей
9 119
Баллы
113
если столбик из ссылки и анкора уже находится в переменной, то через Обработка текста -> Замена:

upload_2015-5-14_3-26-12.png

upload_2015-5-14_3-27-43.png
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
Можно так
Код:
string[] http = project.Variables["response"].Value.Split(new []{"\r\n"}, StringSplitOptions.RemoveEmptyEntries);
string url = http[0].Trim();
string lnk = http[1].Trim();
return  string.Join(":", http.ToArray());
 
  • Спасибо
Реакции: Valiksim

Valiksim

Client
Регистрация
14.04.2012
Сообщения
1 344
Благодарностей
298
Баллы
83
О, столько ответов! Не ожидал. Спасибо, большое
Однако, тестирую варианты, и в каждом случае каша получается (sergodjan66).
Вариант, предложенный "ssXXXss" не знаю как применить, куда и как вставить

Дело в том, что мне надо спарсить ВСЕ ссылки и названия со страницы. Их там 30.
Само собой, что программа ставит их в рядочек
http://tratata.com:Наша ссылка хороша:http://tratatу.com:Ваша ссылка хороша:http://traлала.com:Ссылка тёти Клавы хороша...

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

Вот это надо получить:
http://tratata.com:Наша ссылка хороша
http://tratatу.com:Ваша ссылка хорошаhttp://traлала.com:Ссылка
http://traлала.com:Ссылка тёти Клавы хороша
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
мною предложенный вариант экшен С#, ну а раздели регуляркой , брать всё и в список
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 416
Благодарностей
9 119
Баллы
113
О, столько ответов! Не ожидал. Спасибо, большое
Однако, тестирую варианты, и в каждом случае каша получается (sergodjan66).
Вариант, предложенный "ssXXXss" не знаю как применить, куда и как вставить

Дело в том, что мне надо спарсить ВСЕ ссылки и названия со страницы. Их там 30.
Само собой, что программа ставит их в рядочек
http://tratata.com:Наша ссылка хороша:http://tratatу.com:Ваша ссылка хороша:http://traлала.com:Ссылка тёти Клавы хороша...

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

Вот это надо получить:
http://tratata.com:Наша ссылка хороша
http://tratatу.com:Ваша ссылка хороша
http://traлала.com:Ссылка тёти Клавы хороша
в старт-посте об этом ни слова не было, что много-много ссылок и анкоров и все в куче в столбик..
тот вариант что я предложил, разделяет только пару (ссылка и анкор)..
изначально, при формировании этого списка нужно было их разделять сразу..

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

1. взяли первую с удалением в переменную link
2. взяли первую с удалением в переменную anchor
3. слепили их двоеточием link:anchor, записали в файл (с установленными галками Дописать в файл и Записать перенос строки в конец)
4. переход на начало цикла п.1..

выход из цикла будет по красному выходу из экшена взятия строки, когда список опустеет..
 

Valiksim

Client
Регистрация
14.04.2012
Сообщения
1 344
Благодарностей
298
Баллы
83
мною предложенный вариант экшен С#,
Не знаю как использовать экшен С# ? Что-то ещё дописать надо, а вот что... если вставить код "как есть" то не работает

ну а раздели регуляркой , брать всё и в список
Надо, наверное, показать, что к чему. Регулярка составная
Код:
(?<=<div\ class="yt-lockup-content"><h3\ class="yt-lockup-title"><a\ href=").*?(?="\ class="yt-uix-tile-link\ yt-ui-ellipsis\ yt-ui-ellipsis-2\ yt-uix-sessionlink)|(?<="\ title=").*?(?="\ aria-describedby="description-id-)
Парсит 1. ссылки и 2. названия из поисковой выдачи Ютуба. Если беру всё этой регуляркой, то складывается вот так

http://tratata.com
Наша ссылка хороша
http://tratatу.com
Ваша ссылка хороша

http://traлала.com
Ссылка тёти Клавы хороша


а нужно сложить вот так:

http://tratata.com:Наша ссылка хороша
http://tratatу.com:Ваша ссылка хороша
http://traлала.com:Ссылка тёти Клавы хороша


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

1. взяли первую с удалением в переменную link
2. взяли первую с удалением в переменную anchor
3. слепили их двоеточием link:anchor, записали в файл (с установленными галками Дописать в файл и Записать перенос строки в конец)
4. переход на начало цикла п.1..

выход из цикла будет по красному выходу из экшена взятия строки, когда список опустеет..
Этот вариант был в голове, но отложил его в сторонку, мне казалось, что должна существовать возможность получения данных сразу.

По любому спасибо за подсказку.

Как работать с С#... ещё не созрел, хотя, надо было бы. Я из тех программистов, которые хорошо умеют вставлять готовый код в экшен С#. Обычно, если код мне дали правильный, всё работает :dk:
 

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 454
Благодарностей
5 913
Баллы
113
Можно поставить http:// в качестве разделителя в списке. если конечно достаточно такого названия сайта www.вебсайт.com
Вот пример::
 

Вложения

Последнее редактирование:

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 416
Благодарностей
9 119
Баллы
113
  • Спасибо
Реакции: VladZen

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
http:.*?(?=:http) последнюю только не получается забрать, в регекс => выбрать всё и со всей строки положит тебе в список как тебе надо
 

daymos

Client
Регистрация
11.11.2009
Сообщения
806
Благодарностей
240
Баллы
43
Код:
;
- идеальный разделитель
или

Код:
<url>http://tratata.com</ur><anchor>Наша ссылка хороша</anchor>
а не, не о том речь(
 

Valiksim

Client
Регистрация
14.04.2012
Сообщения
1 344
Благодарностей
298
Баллы
83
Последние 4 сообщения совсем непонятные. Пример приведённый выше, не решает мою задачу. Я выставил чуть выше регулярку, которая уже парсит всё в виде.

/tratata.com
Наша ссылка хороша
/tratatу.com
Ваша ссылка хороша

/traлала.com
Ссылка тёти Клавы хороша


Это из Ютуба, и там http:// в коде нету. Я привёл такие ссылки так просто, для примера. Если брать конкретно мой пример, то там такие вот данные получаются
Код:
/watch?v=OvbEne_8jTs
Бизнес идея 10. Садовая дорожка своими руками
/watch?v=-BxEgbCAvII
ЧАСТЬ 1: Садовая дорожка (тротуарная плитка) своими руками | Handmade garden walkway (PART 1)
/watch?v=Kd1xLC6ed5c
Садовая дорожка - форма трафарет для бетона / The form for making concrete garden path
а нужно сложить вот так:

/watch?v=OvbEne_8jTs:текст ссылки1
/watch?v=-BxEgbCAvII:текст ссылки2
/watch?v=Kd1xLC6ed5c:текст ссылки3


То есть, каждые 2 строки, сложить надо в 1 строку

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

1. взяли первую с удалением в переменную link
2. взяли первую с удалением в переменную anchor
3. слепили их двоеточием link:anchor, записали в файл (с установленными галками Дописать в файл и Записать перенос строки в конец)
4. переход на начало цикла п.1..

выход из цикла будет по красному выходу из экшена взятия строки, когда список опустеет..
Пока что, вот этот способ единственный, который решает задачу. C# не пробовал, если просто так вставить в экшен, не работает, а что там надо допилить, не знаю
 

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 454
Благодарностей
5 913
Баллы
113
Приложил шаблон... Такой результат вас устроит?
 

Вложения

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
/tratata.com
Наша ссылка хороша
/tratatу.com
Ваша ссылка хороша

/traлала.com
Ссылка тёти Клавы хороша


Это из Ютуба, и там http:// в коде нету. Я привёл такие ссылки так просто, для примера. Если брать конкретно мой пример, то там такие вот данные получаются

[/quote]
на что приводил пример и ответ на то получил
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
выпарсивай всё в переменную за раз как делал, далее склеивай в одну строку
  1. string[] http = project.Variables["response"].Value.Split(new []{"\r\n"}, StringSplitOptions.RemoveEmptyEntries);
  2. string url = http[0].Trim();
  3. string lnk = http[1].Trim();
  4. return string.Join(":", http.ToArray());
  5. ну а потом в список всё разом
  6. /watch?v=.*?(?=:/watch?v)
  7. всего три экшена
  8. на завершении можешь ещё поставить проверку на дубли
 

Valiksim

Client
Регистрация
14.04.2012
Сообщения
1 344
Благодарностей
298
Баллы
83
на что приводил пример и ответ на то получил
Суть-то я объяснил. Парсится в разные строки 2 вида данных. А мне надо соединить их в одну строку. То есть каждые 2 должны стать 1-й строкой

Вот это:
выпарсивай всё в переменную за раз как делал, далее склеивай в одну строку
  1. string[] http = project.Variables["response"].Value.Split(new []{"\r\n"}, StringSplitOptions.RemoveEmptyEntries);
  2. string url = http[0].Trim();
  3. string lnk = http[1].Trim();
  4. return string.Join(":", http.ToArray());
  5. ну а потом в список всё разом
  6. /watch?v=.*?(?=:/watch?v)
  7. всего три экшена

  1. К сожалению, для меня тёмный лес. Воспользоваться вряд ли смогу
    [*]на завершении можешь ещё поставить проверку на дубли
Вроде бы дубли, при парсинге поисковой выдачи Ютуба, не наблюдалось, но, спасибо за подсказку, проверить стоит
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
1. ты выпарисиваешь своими средствами и своей логикой, и ложится у тебя всё в переменную в моём случае это переменная response, у тебя она может по другому называться, но тогда тебе и в коде надо изменить
2. Далее ставишь экшен С# и туда вписываешь мой код и указываешь другунную переменную куда сохранить всю строку, хотя можно эту же указать
3. Ставишь третий экшен обработка текста, регекс
  1. /watch?.*?((?=:/watch?)|$) выбрать всё в список
  2. ну и проверка на дубли
подправил регулярку
ещё раз сам себя подправил
 
Последнее редактирование:
  • Спасибо
Реакции: Valiksim

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
вот пример шаблона, в переменной уже записаны те значения как будто ты уже выпарсил
 

Вложения

  • Спасибо
Реакции: Valiksim

Valiksim

Client
Регистрация
14.04.2012
Сообщения
1 344
Благодарностей
298
Баллы
83
Спасибо большое, чуть позже попробую, отпишусь. ПМ занят немного...

P.S. Кстати, чтобы прояснить ситуацию. Взялся я за эту задачу не потому что мне нужно было её решение (хотя, пригодится, конечно). А потому что, прочитал большую статью о работе в Ютубе в 3-ем потоке статей (Как заработать на YouTube и чем может помочь Zennoposter), а там прилагаются парочка шаблонов. Один из них, как раз парсер поисковой выдачи Ютуба. Попробовал я его, и впал в прострацию. Проанализировал шаблон, и понял... что НЕТ ТАК всё должно работать. затем озадачился. Дальнейшее перед вашими глазами
 

Valiksim

Client
Регистрация
14.04.2012
Сообщения
1 344
Благодарностей
298
Баллы
83
  • Спасибо
Реакции: VladZen

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 454
Благодарностей
5 913
Баллы
113
ОТЛИЧНО!!! всё работает заши... прекрасно, в общем. СПАСИБО
Рад, что удалось помочь. В программе много операций со списками, которые позволяют манипулировать ими для приведения к нужному виду.
 

Valiksim

Client
Регистрация
14.04.2012
Сообщения
1 344
Благодарностей
298
Баллы
83
Это так, но когда задача нестандартная, приходится ломать голову, как бы её решить
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113

Кто просматривает тему: (Всего: 3, Пользователи: 0, Гости: 3)