Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
3 / 3 / 0
Регистрация: 11.07.2017
Сообщений: 32

Объединить две строки и подправить регулярное выражение

12.07.2017, 07:56. Показов 2513. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В общем задача на уровне для новичка, но я ее резко не осилила. Может еще сама соображу, но вчера ночью не справилась.
C++ (Qt)
1
2
3
4
5
6
static const std::regex hl_regex( "<a(.*?)href="(.*?)://(.*?)"(.*?)>", std::regex_constants::icase  ) ;
std::set<std::string> schema = {std::sregex_token_iterator( text.begin(), text.end(), hl_regex, 2 ),
             std::sregex_token_iterator{} } ;
 std::set<std::string> hostname = {std::sregex_token_iterator( text.begin(), text.end(), hl_regex, 3 ),
             std::sregex_token_iterator{} } ;
std::set<std::string>  uri;
Нужно чтобы в ури образовалось schema + hostname
С регуляркой нужно чтоб она лучше искала ссылки, так например если кодер заюзал не двойные кавычки, а одинарные то эти ссылки отсеивает. И еще проскакивали ссылочки вида https://site.org/folder/page.html а мне нужны только индексные, тоесть только имя хоста, если в регулярку включить слэш то тогда ссылки без слэша не берет, а их тоже много. Вот как-то так. Спасибо.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.07.2017, 07:56
Ответы с готовыми решениями:

Регулярное выражение, нужно оставить только заглавные буквы которые стоят по две заглавных
Регулярное выражение, нужно оставить только заглавные буквы которые стоят по две заглавных, а если одна или три то их не надо. Заглавные...

регулярное выражение с переносом строки
Всем привет! Даже не будем влезать в c# а как пример Notepad++ жму поиск по регулярным выражениям и ввожу &lt;div...

Регулярное выражение с переносом строки
E-mail: &lt;/td&gt; &lt;td&gt; test@mail.ru &lt;/td&gt; как мне вытащить такой кусок из текста? string pattern =...

7
3 / 3 / 0
Регистрация: 11.07.2017
Сообщений: 32
12.07.2017, 15:01  [ТС]
Осталось с кавычками что-то придумать. То была задумка чтобы искать с http и https, ноя сделала так
C++ (Qt)
1
2
3
4
5
6
7
std::set<std::string> get_all_links( std::string text )
{
    static const std::regex hl_regex( "<a(.*?)href="?(http.*?)"(.*?)>", std::regex_constants::icase  ) ;
    std::set<std::string> hostname = {std::sregex_token_iterator( text.begin(), text.end(), hl_regex, 2 ),
             std::sregex_token_iterator{} } ;
    return hostname;
}
Ищит и находит, но вот если кавычки не двойные то увы. Радует что таких быдлокодеров мало. А в целом списо получает.
Кликните здесь для просмотра всего текста
0
Заблокирован
12.07.2017, 20:32
Лучший ответ Сообщение было отмечено tashka-bukashka как решение

Решение

Цитата Сообщение от tashka-bukashka Посмотреть сообщение
"<a(.*?)href="?(http.*?)"(.*?)>"
Это компилируется без ошибок?

Цитата Сообщение от tashka-bukashka Посмотреть сообщение
но вот если кавычки не двойные то увы
Если так <a(.*?)href=(['"])(http.*?)(\2)(.*?)>?

Добавлено через 3 минуты
Кликните здесь для просмотра всего текста

Не по теме:

Кликните здесь для просмотра всего текста
Одинарные кавычки вроде вполне законны. Видимо "Радует что таких быдлокодеров мало" это самоирония.

1
3 / 3 / 0
Регистрация: 11.07.2017
Сообщений: 32
13.07.2017, 07:40  [ТС]
Цитата Сообщение от daun-autist Посмотреть сообщение
Это компилируется без ошибок?
Ну если именно так то конечно ошибки будут, еще в самой среде. Тут видимо прилетало НЛО и украло обратные слэши. Сейчас попробовала ваш вариант, вроде находит, только чуть изменила.
C++ (Qt)
1
"<a(.*?)href=(['"])(http.*?)(['"])(.*?)>"
Вариант с (\\2) не находил ни одной. Ну и то что в std::set вторую маску на третию нужно было заменить я тоже поняла, очевидно же.С остальным попробую сама разобраться.
0
Заблокирован
13.07.2017, 07:49
Цитата Сообщение от tashka-bukashka Посмотреть сообщение
Вариант с (\\2) не находил ни одной.
https://wandbox.org/permlink/rM5FcZnieBpEoC3V
1
3 / 3 / 0
Регистрация: 11.07.2017
Сообщений: 32
13.07.2017, 07:56  [ТС]
И опять кавычки не экранированые.(((

Добавлено через 5 минут
Цитата Сообщение от daun-autist Посмотреть сообщение
https://wandbox.org/permlink/rM5FcZnieBpEoC3V
Ясно. Нужно было два слэша. А я один написала, потому и не находило. Это я как понимаю можно указать маску по ее номеру.Удобно, это мне еще пригодиться. Пользуясь случаем еще один вопрос задам. А если мне например нужно указать что некоторая часть может быть, а может и не быть?
0
Заблокирован
13.07.2017, 07:59
Цитата Сообщение от tashka-bukashka Посмотреть сообщение
Это я как понимаю можно указать маску по ее номеру.
То, что в круглых скобках называется группой, а не маской.

Цитата Сообщение от tashka-bukashka Посмотреть сообщение
А если мне например нужно указать что некоторая часть может быть, а может и не быть?
Вопросительным знаком.
0
13.07.2017, 08:51

Не по теме:

Цитата Сообщение от tashka-bukashka Посмотреть сообщение
И опять кавычки не экранированые.(((
https://www.cyberforum.ru/blog... g4412.html
Цитата Сообщение от IGPIGP
Полезная тема. Спасибо)
Ещё раз о проклятии рода "Баскервилей".
Если в тегах кода в строковом литерале (строке в кавычках) Вы пытаетесь написать защищённый символ (символ предваряемый обратным слешем), то обратный слеш пропадает, а обратный эффект возникает. Получается, что на программистском форуме, нельзя предоставить листинг, который скомпилируется и заработает не то что у читателей, а на собственной машине.
std::cout<<"\"Hello world\""<<endl;
C++
1
std::cout<<""Hello world""<<endl;
Эту радость всё знают. Написал для полноты.
Ещё иногда случается отправка дубля (двух одинаковых сообщений либо дублирование текста в один пост).
А вот этот эффект мне непонятен: когда печатаешь быстро, дублируются несколько символов и получается: Доброгорого времени сутток.
Но это может только у меня так система с пальцами взаимодействует. Тут хотелось бы услышать других участников.
:)

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.07.2017, 08:51
Помогаю со студенческими работами здесь

Регулярное выражение из командной строки
Всем привет! Сильно не пинайте, я в perl только начал разбираться, да и в регулярных выражениях тоже. Кто знает как можно сделать так чтобы...

Регулярное выражение - перевод строки
Читаю файл NB, NM=&quot;&quot;, NA, NM=&quot;&quot;, NB, NM=&quot;&quot;,

Регулярное выражение для строки
Здравствуйте. Есть строка /login?nick=sanych&amp;refer=http://site.com/ и еще одна ...

Регулярное выражение на четыре строки
Нужно получить из хтмл кода число 1.1750 Не получается записать регулярное выражение состоящие из 4-х строк Строка в тексте,в котором я...

Объединить две строки s1 и s2, причем из второй строки копировать не более n символов
strncat - сцепить две строки s1 и s2, причем из второй строки копировать не более n символов. Объявление: char...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru