Распарсить строку

Тема в разделе "Регулярные выражения", создана пользователем pikasun, 29 дек 2009.

Статус темы:
Закрыта.
Модераторы: xpert13
  1. pikasun

    pikasun Постоялец

    Регистр.:
    23 сен 2009
    Сообщения:
    117
    Симпатии:
    9
    Помогите на Perl распарсить строку.
    _http://192.168.10.210/site/mail.ru_

    Без нижних подчеркиваний разумеется
    и там и там.

    В итоге получить _http://mail.ru_
     
  2. antidote

    antidote

    Регистр.:
    21 янв 2008
    Сообщения:
    167
    Симпатии:
    42
  3. Abliganto

    Abliganto Постоялец

    Регистр.:
    30 ноя 2009
    Сообщения:
    111
    Симпатии:
    46
    Тогда уж проще

    Код:
    $http://(?:.*)/([^/]+)$
     
  4. satih

    satih

    Регистр.:
    19 сен 2008
    Сообщения:
    429
    Симпатии:
    710
    В таких случаях обычно оптимальные варианты не нужны, хотя для айпи есть регексп не слишком короткий :) если просто замена в небольшом тексте, то ради удобства может пострадать скорость, будет незаметно (если действие линейное), только если уж "удобно" писать, то:
    Код:
    $http://.*?/([^_]*)$
     
  5. legendar

    legendar Писатель

    Регистр.:
    9 дек 2008
    Сообщения:
    9
    Симпатии:
    1
    мне кажется ТС хотел это:

    $(http://).*?/site/(.*)$
     
  6. pikasun

    pikasun Постоялец

    Регистр.:
    23 сен 2009
    Сообщения:
    117
    Симпатии:
    9
    if ($ip_urls{$el}[$i]=~ s/$(http://).*?/site/(.*)$/123/) {

    Поправьте чего с синтаксисом не так? Я так понимаю фильтрацию где-то промаргал?
    Ругается на эту строку. Заместо 123 необходимо вставить выражение отражающее именно адрес т.е тот же (.*)

    Скрипт перловый.
     
  7. Miraage

    Miraage Angular/Laravel

    Регистр.:
    3 июн 2008
    Сообщения:
    230
    Симпатии:
    51
    только включи соотв. модификаторы соотв, либо в строку переделывай

    Код:
    $
        (?<=    
            http://[\d.]+/(\w+)/    # слева идет http://ip_адрес/сайт/  
        )    
        [\w-.]+                     # а затем и сам сайт, который мы ловим в "карман"
    $
    
     
  8. RolCom

    RolCom

    Регистр.:
    12 мар 2008
    Сообщения:
    351
    Симпатии:
    108
    У тебя в самой регулярке встречаются символы, являющиеся ограничителями регулярки. Естестно, компилятор не сможет разобраться в этом.
    Замени ограничивающие символы
    Код:
    f ($ip_urls{$el}[$i]=~ s{$(http://).*?/site/(.*)$}{123}) {
    
    И не стоило копипастить того что тут тебе все понаписали.
    $(Перейти по ссылке :)
     
Статус темы:
Закрыта.