Regexp - шпаргалка по регулярным выражениям

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

  1. nikolas1612

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

    Joined:
    Nov 27, 2011
    Messages:
    439
    Likes Received:
    6
    я не автор программы, так что вопрос "подружить" не по окладу. но предварительно могу сказать - что создатель СД посто интегрировал в программу готовый компонент, и разбираться с его внутренним наполнением не будет. регулярки ему не интересны (по кр. мере пока). сам компонент находится здесь - Ссылки недоступны для гостей
    найдете более позднюю либо мощную версию - поговорим с автором.

    с PHP не дружу. все что сказал по поводу регулярок в CD - результат собственных автивных испытаний и изучения мануала к компоненту RegExp.
     
  2. kagorec

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

    Joined:
    Jan 3, 2011
    Messages:
    4,442
    Likes Received:
    1,422
    Аналогично, потому примера супер пупер рабочего сразу предложить не могу. Обычно запросы по скриптам отправляю знакомым профессоналам своего дела. Благодарю Сергея (разработчика) за то что ввел возможность использования регулярных выражений в программе, пусть даже и простых , ведь до приобретения CD о регулярных выражениях не имел представления и обычно как пальцем в небо копировал первое попавшееся с сайтов, работает и добро) Сейчас имеются представления о принципе построения регулярок.
    п.с. тема была создана чтобы мы делились рабочии вариантами регулярок для C.D. )
     
  3. Love-world

    Love-world Member Пользователи

    Joined:
    Jul 19, 2013
    Messages:
    102
    Likes Received:
    18
    Регулярки в CD это несомненно весело и нужно. Было бы действительно неплохо, если бы автор обновил библиотеку (или как ее еще можно назвать). Я вот тоже с php не особо дружу, вчера только начал читать основы. Однако сумел сляпать на основе взятых из открытых источников скриптов, свой скриптик, выполняющий паттерн поиск-замены, в том числе и на основе любых регулярок. Вполне рабочий. И так сказать,
    Если кому нужно пожалуйста:

    PHP:
    <?php
    header 
    ("Content-Type: text/plain; charset=utf-8");

    $text = ($_POST["data"]);

    $patterns = array ("##"//Тут ваша регулярка (между #), или любой текст(в случае с текстом # убрать) для поиска
    "##"); //Тут вторая регулярка или текст для поиска

    $replace = array (""""); //Тут текст (или регулярка) для замены соответственно(если ничего, то оставьте пустым)

    //$text = preg_replace("##","",$text);

    $text preg_replace($patterns$replace$text);
    echo 
    $text;
    ?>

    Если вы хотите использовать одну регулярку, то раскомментируйте блок

    PHP:
    //$text = preg_replace("##","",$text);
    и закомментируйте или удалите блоки

    PHP:
    $patterns = array ("##""##");
    и

    PHP:
    $replace = array ("""");
    Скрипт сохраняем в utf-8
     
  4. vavera4ka

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

    Joined:
    Aug 28, 2013
    Messages:
    23
    Likes Received:
    0
    Подскажите, как правильно использовать регулярки в сканере сайтов?

    Мне необходимо собирать ссылки по определенному шаблону, к примеру:
    /showthread.php?t=re:^1\d{7}&page=1 - примерно такой шаб - каким образом мне необходимо его записать?
     
  5. kagorec

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

    Joined:
    Jan 3, 2011
    Messages:
    4,442
    Likes Received:
    1,422
    отмечу что регулярные выражения поддерживаются только в полях "поиск-замена" и макросах замены.
    re:showthread\.php\?t\=([0-9]{1,15}{sep}&page\=[0-9]{1,15})|showthread.php?t=$1
    п.с. для сканирования форума не нужно регулярок, это как с пушки по воробьям.) скиньте свою настройку в скайп посмотрю, ато неделю мучаетесь самостоятельно, заметил.
    ----------
    Всетаки пришлось использовать регулярку чтоб для простых ссылок назначить первую страницу ..&page=1
     
    Last edited: Sep 21, 2013
  6. Benjamin Coleman

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

    Joined:
    Oct 23, 2010
    Messages:
    152
    Likes Received:
    4
    Подскажите, пожалуйста, регулярку:

    из полученного массива строк (предложений) оставить только слова с Заглавной буквы.
     
  7. kagorec

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

    Joined:
    Jan 3, 2011
    Messages:
    4,442
    Likes Received:
    1,422
    1.Одной из границ выделить часть кода где статья.
    2.В дополнительных настройках отметить htm to text и в ниже окошке вписать можно регулярку которая обрамит метками нужные слова
    3.Теперь эту границу присвоить для "повторяющиеся границы" и в повторяюиеся границе указать чтоб распарсивало эту область кода/статьи
     
  8. Root

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

    Joined:
    Mar 10, 2010
    Messages:
    14,818
    Likes Received:
    3,485
    Эта возможность теперь есть:
    И:
     

    Attached Files:

  9. kagorec

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

    Joined:
    Jan 3, 2011
    Messages:
    4,442
    Likes Received:
    1,422
    Задача была найти в 270к документах емайлы, нашлось немало хроших но обаружилось наличие некоректных майлов

    PHP:
    380x468_21_a1cd040fd8a860273ec4538684318b06@380x468_0xd42ee429_257445291387352966.jpeg
    380x468_21_7d0c98d93e1567c76c8f3392740fe6e0
    @380x468_0xd42ee429_6746771781387282912.jpeg
    380x468_21_96eab69339c0ae625046cf580a827ce3
    @380x468_0xd42ee429_6724939451387282675.jpeg
    115x100_21_d53594063357b252e32f4573baa39ace
    @380x468_0xd42ee429_257445291387352966.jpeg
    115x100_21_ad4d566bdb35c95f44aa54d8d4028e90
    @380x468_0xd42ee429_6746771781387282912.jpeg
    Почистить можно в нотепад++ используя регулярное выражение
     
  10. Kot

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

    Joined:
    Nov 23, 2012
    Messages:
    24
    Likes Received:
    0
    Есть код:
    КОД---> Gewindestange<br />Befestigungseinheit für isFang Dreibeinstativ auf 1 FangFix-Stein.<br /><br /><br />Fabrikat:&nbsp;&nbsp;&nbsp;&nbsp;OBO BETTERMANN<br />Typ:&nbsp;&nbsp;&nbsp;&nbsp;isFang 3B-G1<br />Länge:&nbsp;&nbsp;&nbsp;&nbsp;270mm<br />Werkstoff: &nbsp;&nbsp;Edelstahl, rostfrei Werkstoff 1.4301<br />Art.-Nr.:&nbsp;&nbsp;&nbsp;&nbsp;5408971<br /><br />Einheit:&nbsp;&nbsp;<br /> <---КОД

    Отсюда мне надо вытаскивать сначала название характеристики, например - "Werkstoff", а затем ее значение, т.е. - "Edelstahl, rostfrei Werkstoff 1.4301". Причем этих характеристик может быть много и каждый раз разные. Потом буду кумекать, как вывести в CSV-файл сначала строку с названиями характеристик, а прод ней строку со значениями этих характеристик. Но это потом, сначала хочу с регуряками разобраться.
     
  11. kagorec

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

    Joined:
    Jan 3, 2011
    Messages:
    4,442
    Likes Received:
    1,422
    Отдельной границей выделить область кода характеристик, и добавить в "поиск-замена"
    Далее уже самостоятельно решите что делать с выделенными атрибутами и его значениями, вида
    <!atr>Fabrikat</!atr>:<!znach>&nbsp;&nbsp;&nbsp;&nbsp;OBO BETTERMANN</!znach>
     
  12. Kot

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

    Joined:
    Nov 23, 2012
    Messages:
    24
    Likes Received:
    0
    Вариант не работает... Но идея заключить в теги, хороша. Добиться бы желаемого... Тогда можно будет в настройке шаблона вычленить нужное - вывести сначала стройкой название характеристик, а 2-ой строкой - значения.
    Я пока добился вот этого вывода в CSV файл (то, что между разделителями, находятся в ячейках в одной строке):

    Характеристика - это с ">" на конце, а значение - начинается с "<". А где нет таких знаков - это описание.
    в поиск-замена вставил:

    Но этот вывод опять же нужно в Экселе макросом обрабатывать ещё.
     
    Last edited: Feb 2, 2014
  13. kagorec

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

    Joined:
    Jan 3, 2011
    Messages:
    4,442
    Likes Received:
    1,422
    ... потом распарсиваете это все в столбик текстовика и удаляете дубли что бы получить список характеристик и каждую выборку реализовать через {get}
     
  14. Kot

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

    Joined:
    Nov 23, 2012
    Messages:
    24
    Likes Received:
    0
    Прошу прощения. Не работала конструкция, пока не начал изучать регулярные выражения. Плюс отключил перевод HTML в TXT в доп.настройках границы. Вот после этого кода:

    PHP:
    re:(<br />){2,}|<br />
    re:(&nbsp;){2,}|
    re:(\s\t){2,}|
    re:>([^<\:]{1,145})\:([^<\:]{1,145})<|><!atr>$1</!atr>:<!znach>$2</!znach><
    более менее нормализовалось. Вывод в пред просмотре:

    Gewindestange<br />Befestigungseinheit fur isFang Dreibeinstativ auf 1 FangFix-Stein.<br /><!atr>Fabrikat</!atr>:<!znach>OBO BETTERMANN</!znach><br /><!atr>Typ</!atr>:<!znach>isFang 3B-G1</!znach><br /><!atr>Lange</!atr>:<!znach>270mm</!znach><br /><!atr>Werkstoff</!atr>:<!znach> Edelstahl, rostfrei Werkstoff 1.4301</!znach><br /><!atr>Art.-Nr.</!atr>:<!znach>5408971</!znach><br />Einheit:<br />
     
    Last edited: Feb 3, 2014
  15. Amarous

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

    Joined:
    Sep 19, 2012
    Messages:
    33
    Likes Received:
    8
    Всем Привет!
    Подскажите как удалить из текста
    начало44_Soldконец
    начало45_Soldконец
    начало3345345"№;*:%)*_Soldконец
    началоЛЮБЫЕСИМВОЛЫ_Soldконец

    но при этом
    начало44_конец оставить в тексте.
     
  16. kagorec

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

    Joined:
    Jan 3, 2011
    Messages:
    4,442
    Likes Received:
    1,422
    :soccer:
     
  17. Amarous

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

    Joined:
    Sep 19, 2012
    Messages:
    33
    Likes Received:
    8
    спасибо.
    но весь текст в одном документе.
    Удаляется весь текст по левую и по правую сторону.
    начало44_Soldконец
    начало45_Soldконец
    начало3345345"№;*:%)*_Soldконец
    началоЛЮБЫЕСИМВОЛЫ_Soldконец
    начало44_конец



    а надо удалить начало+текст без пробелов или без переносов+_Soldконец
     
  18. kagorec

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

    Joined:
    Jan 3, 2011
    Messages:
    4,442
    Likes Received:
    1,422
    желательно предоставить фрагмент кода "как есть" где применить регулярку
     
  19. Kreol

    Kreol Модератор Staff Member Модератор

    Joined:
    Jan 6, 2013
    Messages:
    2,666
    Likes Received:
    596
    а так?
    Code:
    _Sold|_
    re:^(.*44_.*)$|ʘ$1ʘ
    re:^[^ʘ](.*)$|
    ʘ|
     
    Last edited: Feb 21, 2014
  20. Amarous

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

    Joined:
    Sep 19, 2012
    Messages:
    33
    Likes Received:
    8
    это и есть часть кода
    HTML:
    описаниеначало
    начало44_Soldконец
    начало45_Soldконец
    начало3345345"№;*:%)*_Soldконец
    началоЛЮБЫЕСИМВОЛЫ_Soldконец
    начало44_конец
    описаниеконец
    
    из этого
    надо сделать
    HTML:
    описаниеначало
    начало44_конец
    описаниеконец
    
    обрабатываемый документ в это txt файл
     

Share This Page