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

Тема в разделе "Решение различных задач по парсингу", создана пользователем kagorec, 19 мар 2012.

  1. nikolas1612

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

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

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

    kagorec Администратор Команда форума Администратор

    Регистрация:
    3 янв 2011
    Сообщения:
    4.431
    Адрес:
    Latvia
    Аналогично, потому примера супер пупер рабочего сразу предложить не могу. Обычно запросы по скриптам отправляю знакомым профессоналам своего дела. Благодарю Сергея (разработчика) за то что ввел возможность использования регулярных выражений в программе, пусть даже и простых , ведь до приобретения CD о регулярных выражениях не имел представления и обычно как пальцем в небо копировал первое попавшееся с сайтов, работает и добро) Сейчас имеются представления о принципе построения регулярок.
    п.с. тема была создана чтобы мы делились рабочии вариантами регулярок для C.D. )
     
  3. Love-world

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

    Регистрация:
    19 июл 2013
    Сообщения:
    102
    Регулярки в 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 Пользователи

    Регистрация:
    28 авг 2013
    Сообщения:
    23
    Подскажите, как правильно использовать регулярки в сканере сайтов?

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

    kagorec Администратор Команда форума Администратор

    Регистрация:
    3 янв 2011
    Сообщения:
    4.431
    Адрес:
    Latvia
    отмечу что регулярные выражения поддерживаются только в полях "поиск-замена" и макросах замены.
    re:showthread\.php\?t\=([0-9]{1,15}{sep}&page\=[0-9]{1,15})|showthread.php?t=$1
    п.с. для сканирования форума не нужно регулярок, это как с пушки по воробьям.) скиньте свою настройку в скайп посмотрю, ато неделю мучаетесь самостоятельно, заметил.
    ----------
    Всетаки пришлось использовать регулярку чтоб для простых ссылок назначить первую страницу ..&page=1
     
    Последнее редактирование: 21 сен 2013
  6. Benjamin Coleman

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

    Регистрация:
    23 окт 2010
    Сообщения:
    152
    Подскажите, пожалуйста, регулярку:

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

    kagorec Администратор Команда форума Администратор

    Регистрация:
    3 янв 2011
    Сообщения:
    4.431
    Адрес:
    Latvia
    1.Одной из границ выделить часть кода где статья.
    2.В дополнительных настройках отметить htm to text и в ниже окошке вписать можно регулярку которая обрамит метками нужные слова
    3.Теперь эту границу присвоить для "повторяющиеся границы" и в повторяюиеся границе указать чтоб распарсивало эту область кода/статьи
     
  8. Root

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

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Эта возможность теперь есть:
    И:
     

    Вложения:

  9. kagorec

    kagorec Администратор Команда форума Администратор

    Регистрация:
    3 янв 2011
    Сообщения:
    4.431
    Адрес:
    Latvia
    Задача была найти в 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 Пользователи

    Регистрация:
    23 ноя 2012
    Сообщения:
    24
    Есть код:
    КОД---> 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 Администратор Команда форума Администратор

    Регистрация:
    3 янв 2011
    Сообщения:
    4.431
    Адрес:
    Latvia
    Отдельной границей выделить область кода характеристик, и добавить в "поиск-замена"
    Далее уже самостоятельно решите что делать с выделенными атрибутами и его значениями, вида
    <!atr>Fabrikat</!atr>:<!znach>&nbsp;&nbsp;&nbsp;&nbsp;OBO BETTERMANN</!znach>
     
  12. Kot

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

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

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

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

    kagorec Администратор Команда форума Администратор

    Регистрация:
    3 янв 2011
    Сообщения:
    4.431
    Адрес:
    Latvia
    ... потом распарсиваете это все в столбик текстовика и удаляете дубли что бы получить список характеристик и каждую выборку реализовать через {get}
     
  14. Kot

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

    Регистрация:
    23 ноя 2012
    Сообщения:
    24
    Прошу прощения. Не работала конструкция, пока не начал изучать регулярные выражения. Плюс отключил перевод 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 />
     
    Последнее редактирование: 3 фев 2014
  15. Amarous

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

    Регистрация:
    19 сен 2012
    Сообщения:
    33
    Всем Привет!
    Подскажите как удалить из текста
    начало44_Soldконец
    начало45_Soldконец
    начало3345345"№;*:%)*_Soldконец
    началоЛЮБЫЕСИМВОЛЫ_Soldконец

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

    kagorec Администратор Команда форума Администратор

    Регистрация:
    3 янв 2011
    Сообщения:
    4.431
    Адрес:
    Latvia
    :soccer:
     
  17. Amarous

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

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



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

    kagorec Администратор Команда форума Администратор

    Регистрация:
    3 янв 2011
    Сообщения:
    4.431
    Адрес:
    Latvia
    желательно предоставить фрагмент кода "как есть" где применить регулярку
     
  19. Kreol

    Kreol Модератор Команда форума Модератор

    Регистрация:
    6 янв 2013
    Сообщения:
    2.666
    а так?
    Код:
    _Sold|_
    re:^(.*44_.*)$|ʘ$1ʘ
    re:^[^ʘ](.*)$|
    ʘ|
     
    Последнее редактирование: 21 фев 2014
  20. Amarous

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

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

Поделиться этой страницей