Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Закладки » Регулярные выражения

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97

Открыть новую тему     Написать ответ в эту тему

leftMIND

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
   Регулярные выражения
Обучающий материал
  • Книги    
  • Шпаргалки: от AZJIO (AutoIt3, PCRE) от Dave Child
  • wikipedia.org - Регулярные выражения на wiki  
  • edlinsoft.blogspot.com - Регулярные выражения в .NET Framework  
  • php.ru - Синтаксис регулярных выражений  
  • php.net - Синтаксис регулярных выражений  
  • regexpstudio.com - Регулярные выражения для Delphi  
    Официальные источники:
  • docs.notepad-plus-plus.org - Официальный источник Notepad++ (англ. яз.)  
  • pcre.org - Официальный справочник движка PCRE (англ. яз.)  

  •    Тестирование регулярных выражений
    Программы
    Онлайн сервисы
  • RegexBuddy - крутая и платная  
  • RegExp - бесплатно, AZJIO, PCRE, AutoIt3  
  • Expresso  
  • The Regex Coach  
  • RegExstar, Github (AutoHotKey, PCRE)
  • Обзор программ от ManHunter    
  • regexr.com здесь в Community множество готовых регулярных выражений  
  • pagecolumn.com - для javascript  
  • pagecolumn.com - для php  
  • cuneytyilmaz.com - для javascript  
  • php-include.ru - на флеш-плеере  
  • regex101.com  
  • easyregexp.ru  
  • debuggex.com - показывает структурно  

  •    Схожие темы
  • javascript регулярные выражения
  • PHP: Регулярные выражения (RegExp, Regular, eregi, preg)
  • Игра - Регулярно выражайтесь!
     
    первое сообщение темы...
    Обсуждение шапки данной темы ведётся в этой теме
    Рекомендации по составлению вопросов в данной теме:

  • Всего записей: 33 | Зарегистр. 07-04-2002 | Отправлено: 23:55 15-10-2002 | Исправлено: AZJIO, 15:18 12-02-2021
    Mavrikii

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    PryMan
    зависит от того, в чем использовать.
    https://regex101.com/r/amk7Vv/1

    Всего записей: 15431 | Зарегистр. 20-09-2014 | Отправлено: 02:30 06-09-2022
    PryMan



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Mavrikii

    Цитата:
    зависит от того, в чем использовать.

    Python.
    Вроде работает. Буду тестить. Большое спасибо!

    Всего записей: 157 | Зарегистр. 01-08-2018 | Отправлено: 12:47 06-09-2022
    Celsus



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    придумал код, например в тексте есть (2 / 14:32), (18 / 11:22:32) и надо сделать так: (14:32) (11:22:32). В notepad++ в замене найти: (\(\d+\s/\s) заменить: (\( (это я подобрал методом перебора).
    Непонятно, почему в замене (\( а не ((\ или не просто (?

    Всего записей: 384 | Зарегистр. 02-04-2011 | Отправлено: 09:46 11-09-2022 | Исправлено: Celsus, 09:47 11-09-2022
    Mavrikii

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Celsus
    потому что () означает, обычно, скобочную группу. а \( (то есть с экранированием) означает именно скобку в тексте.

    Всего записей: 15431 | Зарегистр. 20-09-2014 | Отправлено: 10:46 11-09-2022
    Celsus



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Mavrikii
    Спасибо, получается, экранирование \ я ставил справа, а не слева. Тогда в замене достаточно \(

    Всего записей: 384 | Зарегистр. 02-04-2011 | Отправлено: 12:17 11-09-2022
    XPerformer



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Regex Crossword
    кроссворды на регулярных выражениях

    Всего записей: 2560 | Зарегистр. 20-06-2011 | Отправлено: 18:26 15-09-2022
    regist123



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    annatut написал(а)
    Цитата:
    Помогите, пожалуйста, составить регулярку для решения такой задачи.  
     В файле htm нужно выделить тегами <h4> и </h4> все слова, написанные заглавными буквами русского языка, и разместить их отдельными строками-заголовками.  
     Например.  
      
     Исходный текст:  
     <p>АБИССИНИЯ – см Ефиопия. </p>  
     <p>АБИХАИЛ – см. Авихаил (5). </p>  
     <p>АВАГФА (счастье), слав. Зафолфан (Есф 1:10), из семи евнухов персидского царя Артаксеркса. </p>  
      
     Нужно получить:  
     <h4>АБИССИНИЯ</h4>  
     <p>– см Ефиопия. </p>  
     <h4>АБИХАИЛ</h4>  
     <p>– см. Авихаил (5). </p>  
     <h4>АВАГФА</h4>  
     <p>(счастье), слав. Зафолфан (Есф 1:10), из семи евнухов персидского царя Артаксеркса. </p>  
      
     Заранее спасибо всем отозвавшимся за помощь!

    Если нужно в точности как в примере, то чуть дополню ответ AZJIO, заменить на

    Код:
    <h4>\1</h4>\r\n<p>\2</p>


    ----------
    Раздачи и акции

    Всего записей: 7198 | Зарегистр. 20-03-2009 | Отправлено: 21:31 27-09-2022
    Celsus



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Пытаюсь очистить HtML и оставить только название и адрес определенных ссылок, чтобы потом придумать, как с помощью AHK, Regex или AWK или чегото еще автоматически копировать адреса ссылок в другой документ в соответствующие места [url=].
     
    Есть однотипные блоки <li>........</li> с одинаковой структурой, но с разными значениями (названия ссылок, адреса ссылок, даты и пр). Я подобрал код regmatch чтобы оставить только название и адрес ссылки, но если обрабатывать два таких однотипных блока  <li>........</li> , то обрабатывается только последний, а в первом группы не работают. По ссылке должна быть выделена часть 3 строки (Forgiven Not Forgotten) и 15 строки (forgiven-not-forgotten/3882443)  https://regex101.com/r/akdoAI/1
     
    Нужно, чтобы эти названия и адреса ссылок шли столбиком. Там правда еще один момент, в блоке <li>...</li> одинаковых записи со словом href="/release две, но с этим разберусь позже.
     
    Оказывается, через поиск в notepad++ ссылки ищутся и выдаются списком. Правда, Тогда вопрос не актуален, но все еще интересен. пишут, что с помощью regex находится только последняя группа с точным совпадением
     
    Добавлено:
    Вот, я  подобрал код, выделяется то, что мне нужно.
    https://regex101.com/r/VRw8SN/1 (Group 2  и Group 4)
    или так https://regex101.com/r/fY29Jo/1 (Group 3  и Group 5)
     Как теперь удалить все остальное?  
    Чтобы остались строки: 1 + 2 и 3 + 4
    Perfect Storm + /perfect-storm/3265557  
    Glasshouse + /glasshouse/3265543
    (перед первыми слэшами еще нужно будет добавить начало адреса, оно общее у всех ссылок)
     

    Всего записей: 384 | Зарегистр. 02-04-2011 | Отправлено: 10:09 28-09-2022 | Исправлено: Celsus, 12:50 28-09-2022
    Celsus



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    В общем, в notepad++ ищу (data-ec-name=")(.*)"$|(<a href="\/release(.*)">$)
    Копирую только нужные результаты в новый текстовой файл
    Потом в этом сервисе делаю так https://regex101.com/r/gr8tAf/1  
    В notepad++ почемуто этот код не работает для первых 12 строк.
     
    Все еще вопрос: можно ли исключить остальной текст, кроме выделенных тут https://regex101.com/r/VRw8SN/1 (Group 2  и Group 4). В поиске два типа групп с разным текстом повторяются и выделяются, а можно ли как-то оставить их, удалив все остальное?

    Всего записей: 384 | Зарегистр. 02-04-2011 | Отправлено: 12:48 28-09-2022 | Исправлено: Celsus, 12:50 28-09-2022
    regist123



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Celsus написал(а)
    Цитата:
    В notepad++ почемуто этот код не работает для первых 12 строк.

     проверил вроде так работает

    Код:
    (   Строка (\d+):\s+)(data-ec-name="(.*)"$)|(.*<a href="\/release(.*)">$)

     написал(а)
    Цитата:
    Все еще вопрос: можно ли исключить остальной текст, кроме выделенных тут https://regex101.com/r/VRw8SN/1 (Group 2  и Group 4). В поиске два типа групп с разным текстом повторяются и выделяются, а можно ли как-то оставить их, удалив все остальное?

    Не очень понял, лучше бы вы прямо написали что нужно оставить.
     
    И копируете не оптимальным способом, вот я делал макром для N++ https://www.safezone.cc/threads/notepad.23102/page-4#post-232882
    Поиск по файлу делайте на последней вкладке поставив галочку помечать закладку. Потом нажимаете горячую клавишу или просто запускаете макрос и все найденные строки копируется без лишних дописок вида
    Цитата:
        Строка 1130:            



    ----------
    Раздачи и акции

    Всего записей: 7198 | Зарегистр. 20-03-2009 | Отправлено: 21:51 28-09-2022 | Исправлено: regist123, 22:11 28-09-2022
    Celsus



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    regist123
    Про поиск непонятно. В файл xml я добавил блок с макросом после блока с макросом трима там. В поиске захожу в пометки, ввожу (\d+):\s+)(data-ec-name="(.*)"$)|(.*<a href="\/release(.*)">$), включаю регулярные выражения, ставлю галку Помечать закладкой. Нажимаю пометить все. Потом нажимаю Ctrl+Shift+T в итоге такой список с мусором:
     
        Строка 1032:         data-ec-name="Forgiven Not Forgotten"
        Строка 1044:           <a href="/release/forgiven-not-forgotten/3882443">
        Строка 1118:         data-ec-name="Trance Anatomy"
        Строка 1130:           <a href="/release/trance-anatomy/3880082">
        Строка 1199:         data-ec-name="Passacaglia"
        Строка 1211:           <a href="/release/passacaglia/3870861">
     
    https://regex101.com/r/gr8tAf/1  
    Там нужно получить вид:
    Forgiven Not Forgotten https://www.beatport.com/release/forgiven-not-forgotten/3882443
    Trance Anatomy https://www.beatport.com/release/trance-anatomy/3880082
    Passacaglia https://www.beatport.com/release/passacaglia/3870861
    или такой
    Forgiven Not Forgotten  
    https://www.beatport.com/release/forgiven-not-forgotten/3882443
    Trance Anatomy  
    https://www.beatport.com/release/trance-anatomy/3880082
    Passacaglia  
    https://www.beatport.com/release/passacaglia/3870861
     
     
    Вместо этого получается так, вставка с началом адреса, которое общее, дублируется в обе группы:
    Forgiven Not Forgotten https://www.beatport.com/release
     https://www.beatport.com/release/forgiven-not-forgotten/3882443
    Trance Anatomy https://www.beatport.com/release
     https://www.beatport.com/release/trance-anatomy/3880082
    Passacaglia https://www.beatport.com/release
     https://www.beatport.com/release/passacaglia/3870861
     
    В идеале было бы хорошо получать такой вид без промежуточных манипуляций с поиском в notepad, но в принципе все равно.

    Всего записей: 384 | Зарегистр. 02-04-2011 | Отправлено: 09:16 29-09-2022 | Исправлено: Celsus, 09:37 29-09-2022
    Mavrikii

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Celsus
    https://regex101.com/r/gr8tAf/2

    Всего записей: 15431 | Зарегистр. 20-09-2014 | Отправлено: 09:32 29-09-2022
    Celsus



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Mavrikii
    Спасибо. [^<]+ как раз то, что я пытался найти. Можно сделать так, чтобы [^<]+ не спотыкался на тегах <>? Пример, как он спотыкается спотыкается тут:
    https://regex101.com/r/thw0yB/1
    Или просто нужно вокруг него ставить <>?

    Всего записей: 384 | Зарегистр. 02-04-2011 | Отправлено: 10:03 29-09-2022 | Исправлено: Celsus, 10:03 29-09-2022
    Mavrikii

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Celsus
    [^<]+ выбирает все до первого <
    зачем вам так сложно, почему не выбрать из ссылки все - и URL и название??

    Цитата:
    <a href="/release/perfect-storm/3265557">Perfect Storm</a>


    Всего записей: 15431 | Зарегистр. 20-09-2014 | Отправлено: 10:17 29-09-2022
    Celsus



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ура, я сделал! https://regex101.com/r/aGh0oS/1
    Только пока не понимаю, как убрать пустые строки. И как и в прошлый раз, вставить начало адреса.
     
    Добавлено:
    Mavrikii

    Цитата:
    зачем вам так сложно, почему не выбрать из ссылки все - и URL и название??

    Изначально так и хотелось, но я не знаю, как.

    Всего записей: 384 | Зарегистр. 02-04-2011 | Отправлено: 10:17 29-09-2022 | Исправлено: Celsus, 10:24 29-09-2022
    Mavrikii

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Celsus

    Цитата:
    Изначально так и хотелось, но я не знаю, как.

    https://regex101.com/r/dP3a1p/1
    используется модификатор s, в notepad++ его может не быть, тогда вместо . нужно писать [.\n]

    Всего записей: 15431 | Зарегистр. 20-09-2014 | Отправлено: 10:27 29-09-2022 | Исправлено: Mavrikii, 10:28 29-09-2022
    Celsus



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Mavrikii
    Спасибо. Я еще придумал такой способ, но в него не вставишь начало адреса, оно будет дублироваться https://regex101.com/r/e7fnee/1
     
    Добавлено:
    Странно, ваш код работает только по вашей ссылке. В notepad++ не работает и тут тоже: https://regex101.com/r/AcvNuI/1
     
    Вообще весь документ это страница HTML а блоки li я просто вырезал для удобства.

    Всего записей: 384 | Зарегистр. 02-04-2011 | Отправлено: 11:03 29-09-2022 | Исправлено: Celsus, 11:14 29-09-2022
    Mavrikii

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Celsus
    я же сказал - модификатор s, добавляет перенос строки в точку.
     
    в N++ нужно поставить галку, что перенос включен в точку.

    Всего записей: 15431 | Зарегистр. 20-09-2014 | Отправлено: 11:14 29-09-2022
    Celsus



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Mavrikii
    Дошло, спасибо! После последнего </li> ничего не удаляется, но остальное, все что ниже результата, просто можно вырезать вручную.
     
    Добавил в конце вашего кода |.*<\/ul>.* теперь все, что после последнего </li>, после которого идет пустая строка и строка с парой пробелов а потом строка с </ul> в конце и после него остальной мусор - все удаляется, только в самом конце результата добавляется строка, которая начинается с 1 пробела и  https://www.beatport.com
     после нее пустая строка. Фиг с ним, так как теперь нужно делать код AHK, чтобы он в другом файле находил блоки с текстом, который в начале строк до ссылок  https://www.beatport.com после них находил места, куда вставлять.  

    Всего записей: 384 | Зарегистр. 02-04-2011 | Отправлено: 11:24 29-09-2022 | Исправлено: Celsus, 14:17 29-09-2022
    regist123



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Celsus написал(а)
    Цитата:
    Про поиск непонятно. В файл xml я добавил блок с макросом после блока с макросом трима там.

    Обсуждение Npp тут офтоп, поэтому ответил в профильной теме.
     
    Добавлено:
    Celsus написал(а)
    Цитата:
    Добавил в конце вашего кода |.*<\/ul>.*

    У меня и без этого из текста в примере по ссылке всё удаляет. Если что дайте пример, где остаётся.

    Цитата:
    после нее пустая строка.  

    Для того чтобы в конце не добавлялась пустая строка уберите в конце \n
    То есть менять надо

    Код:
    $2 https://www.beatport.com$1

    Но это проверял на примере который по ссылке. Если у вас там несколько вхождений, то тогда без этого склеится в одну строчку. Так что повторюсь давайте если что примеры, где это можно проверить.

    ----------
    Раздачи и акции

    Всего записей: 7198 | Зарегистр. 20-03-2009 | Отправлено: 15:02 29-09-2022 | Исправлено: regist123, 15:16 29-09-2022
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97

    Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Закладки » Регулярные выражения


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru