помогите составить правильно регулярку...

Тема в разделе "Регулярные выражения", создана пользователем Lyev, 19 апр 2011.

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

    Lyev Создатель

    Регистр.:
    19 ноя 2009
    Сообщения:
    37
    Симпатии:
    4
    Привет помогите составить правильно регулярку
    чет не получается ТЗ такое с файла выдернуть определенные фразы,(каждая уникальна) которые можно определять только по относительным признакам пример задачи:
    хотел реализовать таким
    кодом:
    чтобы на выходе в out.txt были только фразы которые стоят между "/" и ".html", без "/" и ".html".
    кто разбирается хорошо в регулярках можете помочь...
    Буду признателен.
     
  2. vladis1333

    vladis1333

    Регистр.:
    18 июл 2010
    Сообщения:
    588
    Симпатии:
    226
    посмотрите здесь http://kolchaka.net/poleznye-besplatnosti/regex-tester/. эта тестилка регулярок вам должна помочь. сразу ошибки увидите
     
  3. Miraage

    Miraage Angular/Laravel

    Регистр.:
    3 июн 2008
    Сообщения:
    230
    Симпатии:
    51
    PHP:
    $input 'watch/StVyE3KY/Reverse-And-Suck-part-2.html';
    $result preg_replace('#^(.*?)\/([a-zA-Z0-9\-]+)\.html$#''$2'$input);
    print 
    $result// выводит: Reverse-And-Suck-part-2
     
  4. Belial

    Belial

    Регистр.:
    1 фев 2010
    Сообщения:
    236
    Симпатии:
    113
    PHP:
    $in 'watch/t6cmjGwh/Interracial-Couch-Bang.html';
    $key basename($in'.html');
    echo 
    $key;
     
    Miraage и venetu нравится это.
  5. zzallexx

    zzallexx

    Регистр.:
    11 июн 2008
    Сообщения:
    1.036
    Симпатии:
    699
    PHP:
    <?php
     $file
    =file('in.txt');
     
    $fp=fopen('out.txt','w');
     for(
    $i=0;$i<count($file);$i++){
     
    preg_match('/watch\/(.*?)\.html/is',$file[$i],$out);
     
    fwrite($fp,$out[1]."\n");
     }
    fclose($fp); 
     
    ?>
     
    Lyev нравится это.
  6. marvinz

    marvinz

    Регистр.:
    7 апр 2009
    Сообщения:
    158
    Симпатии:
    74

    написал пример кода на питоне для вашего случая (в переменной р строка из файла:(
    PHP:
    # -*- coding: cp1251 -*-
    p="watch/StVyE3KY/Reverse-And-Suck-part-2.html"
    #замечаем признак - нам нужно все после последнего слеша и до точки
    print p.split('/')[2].split('.')[0]
    выдаст: Reverse-And-Suck-part-2
    PHP не очень владею, возможно мой пример можно переписать на PHP используя подмеченную мной особенность про второй слеш и точку
     
  7. Lyev

    Lyev Создатель

    Регистр.:
    19 ноя 2009
    Сообщения:
    37
    Симпатии:
    4
    Belial ваш вариант тоже Супер работает, только вот,... такая же проблема как и у выводит только один результат а мне надо чтобы все что нашлось в файле in.txt по относительным признакам "/" ".html"
    zzallexx

    Ваш вариант вообще Супер подошел,!!! как самый близкий к результату. С единственной поправкой он выводит тоже только один результат почему-то (, в out.txt а не все полученные результаты которые можно получить по этим признакам из файла in.txt...
    Как можно сделать чтобы выводился СРАЗУ весь результат?
     
  8. Lyev

    Lyev Создатель

    Регистр.:
    19 ноя 2009
    Сообщения:
    37
    Симпатии:
    4
    перенесите тему в нужный раздел

    Сори за оффтоп, темы
    только начал изучать пхп , с поллного нуля и еще незнаю толком как искать правильные разделы по данной теме, Большая Просьба Модерам Пожалуйста, если можно перенесите в правильный раздел, и если не затруднит сообщите в личку название раздела.
    Заранее Спасибо.
    С уважением,)
     
  9. Belial

    Belial

    Регистр.:
    1 фев 2010
    Сообщения:
    236
    Симпатии:
    113
    PHP:
    $in file('in.txt');
    foreach (
    $in as $str) {
            
    $out .= basename(trim($str), '.html')."\r\n";
    }
    $fp fopen('out.txt'w);
    fwrite($fp$out);
    fclose($fp);
     
Статус темы:
Закрыта.