Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WinForms, .Net Framework Новый топик    Ответить
 Помогите написать регулярное выражение  [new]
rsolanov
Member

Откуда:
Сообщений: 927
Всем доброго дня!
В строке /medias/images/874/100001326320b0.jpghttps://electrozon.ru/upload/iblock/ac4/ac4641b8f29313aae727e412e5f0c7a0.jpeg
необходимо выделить одну группу это все что идет до https то есть
/medias/images/874/100001326320b0.jpg
и вторую группу, которая может и отсутствовать, начинающаяся с https то есть
https://electrozon.ru/upload/iblock/ac4/ac4641b8f29313aae727e412e5f0c7a0.jpeg

Написал регулярку как (.*)(https.*$) но это не работает, в двух группах выдает одну исходную одну и ту же строку.
28 авг 18, 12:36    [21656001]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать регулярное выражение  [new]
hVostt
Member

Откуда:
Сообщений: 15390
rsolanov,

https://stackoverflow.com/questions/27745/getting-parts-of-a-url-regex
28 авг 18, 12:39    [21656011]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать регулярное выражение  [new]
rsolanov
Member

Откуда:
Сообщений: 927
Попробовал ^(.*)(http.*)?$ тоже не работает, а как надо сделать не соображу, но дуаю проблема в том, что выражение начинается с (.*) эта группа захватывает всю строку целиком, тогда думаю что в перой группе надо указать что не должна в ходить подстрока https
28 авг 18, 13:13    [21656069]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать регулярное выражение  [new]
hVostt
Member

Откуда:
Сообщений: 15390
Напишите вот так:

исходная строка: блаблабла1

требуется:

группа 1: блабла
группа 2: бла1

А то нифига не понятно, чего вы хотите, вообще.
28 авг 18, 13:24    [21656090]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать регулярное выражение  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 20320
rsolanov
в двух группах выдает одну исходную одну и ту же строку.
у меня ваша регулярка работает на ваших тестовых данных. Что именно вас не устраивает?

К сообщению приложен файл. Размер - 14Kb
28 авг 18, 13:45    [21656166]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать регулярное выражение  [new]
rsolanov
Member

Откуда:
Сообщений: 927
Shocker.Pro
rsolanov
в двух группах выдает одну исходную одну и ту же строку.
у меня ваша регулярка работает на ваших тестовых данных. Что именно вас не устраивает?
Правда работает, что-то я загнался, надо больше отдыхать) Да, в чистом виде она работает, но я пытался сделать ее по-другому, чтобы учитывалось что подстроки, начинающейся с http по условию задачи может и не быть, тогда я ко второй группе добавлял ? и тогда первая группа всегда захватывала всю строку. Я уже понял как все доделать и с этим. Получается что все работает, извините )
28 авг 18, 14:13    [21656224]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать регулярное выражение  [new]
rsolanov
Member

Откуда:
Сообщений: 927
Разобрался почему у меня так вышло, пришла строка
/medias/images/874/100001326320b0.jpghttps://electrozon.ru/upload/iblock/ac4/ac4641b8f29313aae727e412e5f0c7a0.jpeghttps://ogo1.ru/upload/iblock/43b/43be9d76eee6f058891544ed87b7a2ac.jpeg

в которой два вхождения https и в таком случае эта регалярка не отработала так чтобы в одной группе было
/medias/images/874/100001326320b0.jpg
а в другой все остальное:
https://electrozon.ru/upload/iblock/ac4/ac4641b8f29313aae727e412e5f0c7a0.jpeghttps://ogo1.ru/upload/iblock/43b/43be9d76eee6f058891544ed87b7a2ac.jpeg

К сообщению приложен файл. Размер - 19Kb
28 авг 18, 15:02    [21656332]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать регулярное выражение  [new]
hVostt
Member

Откуда:
Сообщений: 15390
В общем, надо было просто подождать
28 авг 18, 15:41    [21656431]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать регулярное выражение  [new]
rsolanov
Member

Откуда:
Сообщений: 927
hVostt
В общем, надо было просто подождать
Я к тому, что с такой строкой эта регулярка уже не работает, если кто поможет, буду благодарен )
28 авг 18, 17:21    [21656659]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать регулярное выражение  [new]
rsolanov
Member

Откуда:
Сообщений: 927
в общем для такой строки подходит ^(.*)((?:https.*){2,})$
но число вхождений подстрок с https не известно, поэтому надо как то написать так чтобы подставлять заранее вычесленное кол-во вхождений либо как то вообще по другому написать регулярку )
28 авг 18, 18:36    [21656762]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать регулярное выражение  [new]
rsolanov
Member

Откуда:
Сообщений: 927
в общем я уже все сделал, просто сначала одной регуляркой вычисляю кол-во вхождений подстроки https и потом подставляю во вторую регулярку. Не знаю существует ли способо сделать все это в одной регулярке?
28 авг 18, 19:26    [21656811]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать регулярное выражение  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 20320
Еще раз.
Если хочешь регулярку, напиши ТЗ, как Хвост сказал, а то выковыривать сложно из твоих повествовательных постов
29 авг 18, 04:23    [21657051]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать регулярное выражение  [new]
rsolanov
Member

Откуда:
Сообщений: 927
Shocker.Pro
Еще раз.
Если хочешь регулярку, напиши ТЗ, как Хвост сказал, а то выковыривать сложно из твоих повествовательных постов

И так, приходят различные строки подобного вида:
/medias/images/874/100001326320b0.jpghttps://electrozon.ru/upload/iblock/ac4/ac4641b8f29313aae727e412e5f0c7a0.jpeghttps://ogo1.ru/upload/iblock/43b/43be9d76eee6f058891544ed87b7a2ac.jpeg

в такой строке есть "полезная" подстрока, которую необходимо найти:
/medias/images/874/100001326320b0.jpg (до первого вхождения подстроки https)

строки приходят разные, поэтому кол-во вхождений https заранее неопределено.
29 авг 18, 10:18    [21657219]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать регулярное выражение  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 20320
Так ты ж его уже написал выше, только ленивым осталось сделать
^(.*?)(http.*)?$
29 авг 18, 11:26    [21657317]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать регулярное выражение  [new]
Изопропил
Member

Откуда:
Сообщений: 31113
rsolanov
И так, приходят различные строки подобного вида

Косяк в приходящих данных, остальное - костыли и подпорки
29 авг 18, 12:01    [21657418]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать регулярное выражение  [new]
rsolanov
Member

Откуда:
Сообщений: 927
Shocker.Pro
Так ты ж его уже написал выше, только ленивым осталось сделать
^(.*?)(http.*)?$
Спасибо, да, это работает, только догнать не могу почему тут решает вопрос именно ленивая первая группа
29 авг 18, 12:56    [21657504]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать регулярное выражение  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 20320
rsolanov
только догнать не могу почему тут решает вопрос именно ленивая первая группа
А что тут непонятного, жадная группа ищет до последнего вхождения http, а ленивая до первого
29 авг 18, 13:01    [21657511]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать регулярное выражение  [new]
rsolanov
Member

Откуда:
Сообщений: 927
Shocker.Pro
rsolanov
только догнать не могу почему тут решает вопрос именно ленивая первая группа
А что тут непонятного, жадная группа ищет до последнего вхождения http, а ленивая до первого
Да, а почему так то? )
29 авг 18, 14:04    [21657636]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать регулярное выражение  [new]
rsolanov
Member

Откуда:
Сообщений: 927
я к тому что мне пока это не кажется очевидным
29 авг 18, 14:04    [21657637]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать регулярное выражение  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 20320
rsolanov
Да, а почему так то? )
по определению. Твой вопрос сродни тому, "почему .* ищет все символы?". По определению.
29 авг 18, 14:08    [21657649]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать регулярное выражение  [new]
rsolanov
Member

Откуда:
Сообщений: 927
Shocker.Pro
rsolanov
Да, а почему так то? )
по определению. Твой вопрос сродни тому, "почему .* ищет все символы?". По определению.
Не понятно почему ленивая ищет до первого вхождения http
29 авг 18, 14:51    [21657728]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать регулярное выражение  [new]
Arm79
Member

Откуда: МО, Раменское
Сообщений: 3663
rsolanov,

потому лень ей искать дальше
29 авг 18, 14:57    [21657743]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать регулярное выражение  [new]
rsolanov
Member

Откуда:
Сообщений: 927
Arm79
rsolanov,

потому лень ей искать дальше
Доходчиво ) Спасибо вам всем )
29 авг 18, 18:26    [21658019]     Ответить | Цитировать Сообщить модератору
Все форумы / WinForms, .Net Framework Ответить