Удалить слова по регулярке

Discussion in 'Решение различных задач по парсингу' started by Zorro, Dec 22, 2012.

  1. Zorro

    Zorro New Member Пользователи

    Joined:
    Dec 22, 2012
    Messages:
    17
    Есть спарсенный текст в котором могут хаотически содержаться нежелательные кусочки - майлы, урлы...
    не могу сообразить, как их просто выкинуть из текста.
    признаки например такие
    "@", "www.", ".com", ".net", ....

    Спасибо.
     
    Last edited: Dec 22, 2012
  2. kagorec

    kagorec Администратор Staff Member Администратор

    Joined:
    Jan 3, 2011
    Messages:
    4,442
    Location:
    Latvia
    используйте в поиск-замена re:здесь-регулярка|на что заменить
    http://forum.sbfactory.ru/showthread.php?t=272 подробнее о ругелярках, конкретные примеры
     
  3. Zorro

    Zorro New Member Пользователи

    Joined:
    Dec 22, 2012
    Messages:
    17
    сделал так
    PHP:

    [REPLACE(re:((\S*)(@)(\S*))|)]
    [
    REPLACE(re:((\S*)(http:)(\S*))|)]
    [
    REPLACE(re:((\S*)(www.)(\S*))|)]
    [
    REPLACE(re:((\S*)(.com)(\S*))|)]
    [
    REPLACE(re:((\S*)(.net)(\S*))|)]
    [
    REPLACE(re:((\S*)(.org)(\S*))|)]
       [
    HTMTOTXT:]
       <
    CD_CYCLE_GRAN_1!>
       [/
    HTMTOTXT]
    [/
    REPLACE]
    [/
    REPLACE]
    [/
    REPLACE]
    [/
    REPLACE]
    [/
    REPLACE]
    [/
    REPLACE]
    спасибо, вроде работает

    я так понимаю записать в виде (.com|.net|.org) - не получится?
    и регистронезависимость (i) - то же не употребить?
     
    Last edited: Dec 23, 2012
  4. kagorec

    kagorec Администратор Staff Member Администратор

    Joined:
    Jan 3, 2011
    Messages:
    4,442
    Location:
    Latvia
    странно что это работает))
    неправильно
    PHP:
    [REPLACE(re:((S*)(.net)(S*))|)]
    [
    REPLACE(re:((S*)(.org)(S*))|)]
       [
    HTMTOTXT:]
       <
    CD_CYCLE_GRAN_1!>
       [/
    HTMTOTXT]
    [/
    REPLACE]
    [/
    REPLACE]
    правильно через разделитель {break}
    PHP:
    [REPLACE(re:((S*)(.net)(S*))|{break}re:((S*)(.org)(S*))|)] [HTMTOTXT:]<CD_CYCLE_GRAN_1!>[/HTMTOTXT] [/REPLACE] [/REPLACE]
    нет, лучше используйте альтернативную регулярку без палочек чтоб

    должно работать
     
    Last edited: Dec 23, 2012
  5. markov34

    markov34 New Member Пользователи

    Joined:
    Aug 6, 2012
    Messages:
    6
    Ппытался сделать регулярку для CD, что бы при парсинге сниппетов удалялись урлы. Где то допустил ошибку.

    Code:
    re:([://\w-\.]+)((?:[\w]+\.)[a-zA-Z]+)(([?:/\w])([a-z0-9]+))+|
    CD просто виснет, хотя на сайте Ссылки недоступны для гостей все работает.
     
  6. Root

    Root Администратор Администратор

    Joined:
    Mar 10, 2010
    Messages:
    14,818
    Город:
    Барнаул
    Надо убрать эти регулярки из программы, что на них всех тянет ;).
    Все решается обычной поиск-заменой программы с макросом {skip}
    Ссылки недоступны для гостей
     
  7. markov34

    markov34 New Member Пользователи

    Joined:
    Aug 6, 2012
    Messages:
    6
    Как я понял макросом {skip} можно удалить текст ссылки только между какими то тэгами (div, title и т.д.). А как быть если остались куски урлов?
    Например.

    Code:
    pletenie-kosichek-na*Leninskom-prospekte.php
     
  8. kagorec

    kagorec Администратор Staff Member Администратор

    Joined:
    Jan 3, 2011
    Messages:
    4,442
    Location:
    Latvia
    Дочистить, либо корректно применить {skip}
     
  9. markov34

    markov34 New Member Пользователи

    Joined:
    Aug 6, 2012
    Messages:
    6
    В ручную это понятно. Дело в том, что сниппеты парсятся уже с такими кусками. Так что корректно применить макрос {skip} не получится.
     
  10. Root

    Root Администратор Администратор

    Joined:
    Mar 10, 2010
    Messages:
    14,818
    Город:
    Барнаул
    Несколько поиск-замен использовать. Конкретно то задачу поставьте с примером.
     
  11. nikolas1612

    nikolas1612 Member Пользователи

    Joined:
    Nov 27, 2011
    Messages:
    439
    вот этот код и ему подобные -
    Code:
    pletenie-kosichek-na*Leninskom-prospekte.php
    как вариант, удаляются так:
    re:[-\w*]*\.php|
     
    Last edited: Dec 31, 2012

Share This Page